【发布时间】:2014-09-08 01:33:32
【问题描述】:
我正在尝试将站点从 2.4 更新到 CakePHP 2.5,但由于某种原因,它忽略了我的插件中的路由。我发现 CakePlugin::loadAll 需要更新为以下内容:-
CakePlugin::loadAll(array(array(
'MyPlugin' => array(
'routes' => true
)
)));
但是,它忽略了来自 MyPlugin 的路由(它们似乎根本没有被加载。我的 app/Config/routes.php 文件中有 CakePlugin::routes()。
我查看了 CakePlugin 内部,并且 CakePlugin::$_plugins 似乎将 MyPlugin['routes'] 设置为 false。
谁能解释这里出了什么问题?
【问题讨论】:
-
我认为您不想为所有插件加载所有路由。对于没有路由文件的每个插件,您都会收到错误消息。为什么不简单地基于每个插件加载路由而不是使用 :loadALL ?
-
@AngelS.Moreno 上述内容旨在基于每个插件加载路线,并且过去一直为我们工作。这就是插件具有“'routes' => true”参数的原因。可以使用 loadAll 来包含它们存在的所有插件路由而不会出错(顺便解决了我的问题,尽管并不理想): CakePlugin::loadAll(array(array('routes' => true, 'ignoreMissing' = > true), 'MyPlugin' ));
-
真的。我只是在您的示例中看不到
'ignoreMissing' => true参数。难道是有一个没有路由的插件,它使所有后续路由都不包括在内?您提到添加参数'ignoreMissing' => true可以解决您的问题。为什么不理想? -
@AngelS.Moreno 我的问题中的示例是更复杂插件加载的简化版本。它应该只为具有
'routes' => true的插件加载路由,但这不起作用。更改我的代码以使用带有'ignoreMissing' => true的全局包含路由解决了这个问题(感谢下面Rakesh 回答中的cmets)。这并不理想,因为这意味着即使我不希望它们用于特定插件,它也会加载所有插件路由。希望这能让事情更清楚。 -
所以你认为你的代码应该像这样运行:加载所有插件,但只加载那些有路由的插件?我对您的目标和预期结果有些困惑。 LoadAll 加载所有插件。如果您想手动选择要加载的插件或要加载路由的插件,请不要使用 loadAll。我误会你了吗?
标签: cakephp cakephp-2.5