我的过程
制作插件单元格
$ bin/cake bake plugin Abc
$ bin/cake bake cell Abc.New
上层流程制作3个文件
plugins/Abc/src/View/Cell/NewCell.php
plugins/Abc/src/Template/Cell/Menu/display.php
和测试文件。
插入layout / default.ctp下一个代码
<?php $cell = $this->cell('Abc.New'); ?>
错误
Cell class Abc.New缺失。
蛋糕\视图\异常\ MissingCellException
我找不到解决方案。请帮帮我!!
答案 0 :(得分:1)
Post有点老了,万一其他人偶然发现这个帖子......
单元格依赖于命名空间来加载和呈现正确的[cell] .ctp文件。换句话说,即使您已在bootstrap.php文件中完成了所需的Plugin::loadAll();
,仍然需要修改composer.json文件并添加插件。例如,我的插件名为“Metronic&#39;”,请注意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命令时会发生的情况:
Plugin::load('Metronic', ['bootstrap' => false, 'routes' => true]);
您需要做的唯一事情就是告诉Composer刷新其自动加载缓存
$ bin\cake bake plugin Metronic
$ php composer.phar dumpautoload
希望这会有所帮助..