帖子有点旧,但万一其他人偶然发现了这个帖子......
单元依赖命名空间来加载和呈现正确的 [cell].ctp 文件。换句话说,即使您已经完成了Plugin::loadAll();
bootstrap.php 文件中的要求,您仍然需要修改 composer.json 文件并添加插件。例如,我的插件名为“Metronic”,请注意autoload
和autolaod-dev
"autoload": {
"psr-4": {
"App\\": "src",
"Metronic\\": "./plugins/Metronic/src"
}
},
"autoload-dev": {
"psr-4": {
"App\\Test\\": "tests",
"Cake\\Test\\": "./vendor/cakephp/cakephp/tests",
"Metronic\\Test\\": "./plugins/Metronic/tests"
}
},
请参阅此处的 CakePHP 手册http://book.cakephp.org/3.0/en/plugins.html#autoloading-plugin-classes。
我的建议是你以后使用 Bake 命令来创建插件。手册没有明确说明这一点,但是当您使用 Bake 命令时会发生这种情况:
- 它为插件创建基本目录结构
- 它在 bootstrap.php 中插入一行,例如
Plugin::load('Metronic', ['bootstrap' => false, 'routes' => true]);
- 它在 composer.json 文件中插入 2 行(根据我上面的示例)
你唯一需要做的就是告诉 Composer 刷新它的自动加载缓存
$ bin\cake bake plugin Metronic
$ php composer.phar dumpautoload
希望这可以帮助..