My Process
-
制作插件单元格
$ 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
和测试文件。
插入布局/默认.ctp 下一个代码
<?php $cell = $this->cell('Abc.New'); ?>
错误
缺少单元格类 Abc.New。
蛋糕\视图\异常\缺少单元格异常
我找不到解决方案。 请帮帮我!!
帖子有点旧,但万一其他人偶然发现了这个线程......
单元格依赖于命名空间来加载和呈现正确的 [cell].ctp 文件。换句话说,即使您已经在 bootstrap.php 文件中完成了所需的Plugin::loadAll();
,您仍然需要修改 composer.json 文件并添加插件。例如,我的插件称为"Metronic",请注意autoload
和autolaod-dev
中额外的 2 行
"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"
}
},
http://book.cakephp.org/3.0/en/plugins.html#autoloading-plugin-classes,请参阅CakePHP手册。
我的建议是您将来使用 Bake 命令创建插件。手册没有明确说明这一点,但这是使用 Bake 命令时发生的情况:
- 它为插件创建基本的目录结构
- 它在引导中插入一行.php例如
Plugin::load('Metronic', ['bootstrap' => false, 'routes' => true]);
- 它在 composer.json 文件中插入 2 行(根据我上面的例子(
然后您唯一需要做的就是告诉 Composer 刷新其自动加载缓存
$ bincake bake plugin Metronic
$ php composer.phar dumpautoload
希望这有帮助..