我想为CakePHP 3.1.4创建一个插件。文档很简单,但示例不起作用(http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins)
步骤如下:
composer create-project --prefer-dist cakephp/app sampleapp
创建数据库。连接到数据库。创建表“联系人”。在目录中导航并运行:
bin/cake bake plugin ContactManager
创建控制器:
bin/cake bake controller --plugin ContactManager Contacts
重新生成自动加载器:
composer dumpautoload
将此行添加到/config/bootstrap.php文件中:
Plugin::load('ContactManager', ['routes' => true]);
但是现在,文档sais
“如果您想访问我们迄今为止所做的事情,请访问 /咨询经理/联系人。你应该得到一个“遗失模型”错误 因为我们还没有定义联系人模型。“
但这不起作用。相反,我得到一个错误:
缺少控制器。 蛋糕\路由\异常\ MissingControllerException。 Cake \ Routing \ Dispatcher-> dispatch ROOT / webroot / index.php,第37行 错误:找不到ContactManagerController。错误:创建 下面的文件中的ContactManagerController: SRC /控制器/ ContactManagerController.php
这意味着无法加载插件,否则不会建议这样做。在“Include”下打开DebugKit时,插件不在插件数组中。
我检查了composer.json文件,并在插件中正确列出。 bake命令没有错误地运行。我尝试了多个具有不同名称的新项目的上述步骤。
这是什么问题?非常感谢你。
答案 0 :(得分:3)
最后,我找到了解决方案。
文档中的内容应该在/plugins/ContactManager/config/routes.php
以及bake plugin
创建的内容:
Router::plugin('ContactManager', function ($routes) {
$routes->fallbacks('DashedRoute');
});
但真正需要在文件中而不是上面的代码片段是:
Router::scope('/contactmanager', ['plugin' => 'ContactManager'], function ($routes) {
$routes->fallbacks();
});