Cake PHP 3插件的控制器不可见

时间:2015-06-25 14:22:24

标签: php cakephp plugins cakephp-3.0

我从/plugins/pluginname directory to /vendor/myname / pluginname

移动了工作插件

我称之为插件控制器的网址是

  

http://domain.local/pluginname/index

在从第一个目录移动到另一个目录之前,插件正在按预期工作。我将插件移动到新目录,使其可以重用于其他蛋糕PHP应用程序。

插件由作曲家安装。

为什么我有消息

  

"错误:找不到控制器类索引。"。所有控制器   从插件在应用程序上不可见,抛出相同的错误。错误是   从文件的第79行抛出   \厂商\ cakephp的\ cakephp的\ SRC \路由\ Dispatcher.php

在主bootstrap.php文件中,我把这行:

Plugin::load('MyName/PluginName', ['bootstrap' => false, 'routes' => true]);

为什么在我的情况下,供应商目录中的插件不起作用?

cakePHP3_controller_not_found_error

2 个答案:

答案 0 :(得分:0)

如果Composer安装了插件,请不要移动它。

是否安装在插件或供应商文件夹中是由插件的作者决定的。

如果您需要在引导程序中完全加载插件,只需使用

即可
Plugin::load('PluginName', ['bootstrap' => false, 'routes' => true]);

请参阅http://book.cakephp.org/3.0/en/plugins.html#plugin-configuration

无论Composer是将它放在供应商还是插件文件夹,它都能正常工作

最重要的是,请将其保留在作者想要的文件夹中。

最后,检查一下你的插件是否适合CakePHP 3.x

至于url,你应该使用/ plugin-name / controller / action

请参阅http://book.cakephp.org/3.0/en/plugins.html#plugin-controllers并引用

  

如果您想访问我们到目前为止所访问的内容,请访问/ contact-manager / contacts

答案 1 :(得分:0)

您可以尝试将autoload变量设置为true。在bootstrap.php中添加以下代码,清除缓存然后检查。 Plugin::load('PluginName', ['autoload' => true]);