0

我正在尝试将站点从 2.4 更新到 CakePHP 2.5,但由于某种原因,它忽略了我的插件中的路由。我发现 CakePlugin::loadAll 需要更新为以下内容:-

CakePlugin::loadAll(array(array(
    'MyPlugin' => array(
        'routes' => true
    )
)));

但是,它忽略了来自 MyPlugin 的路由(它们似乎根本没有被加载。我CakePlugin::routes()在我的 app/Config/routes.php 文件中。

我查看了 CakePlugin 内部,并且 CakePlugin::$_plugins 似乎将 MyPlugin['routes'] 设置为 false。

任何人都可以阐明这里有什么问题吗?

4

1 回答 1

0

我看了一下 CakePlugin::loadAll() 函数,看起来您以错误的方式使用函数参数。

这是一个实际的功能:

public static function loadAll($options = array()) {
    $plugins = App::objects('plugins');
    foreach ($plugins as $p) {
        $opts = isset($options[$p]) ? (array)$options[$p] : array();
        if (isset($options[0])) {
            $opts += $options[0];
        }
        self::load($p, $opts);
    }
}

转换为 - 对于每个插件:

  • 检查选项是否将插件名称作为键,如果是,则将其值视为插件设置
  • 如果选项有数字键(0),即选项没有任何键名,则将其视为全局插件设置并将其添加到每个插件的设置中

只需在您的选项中删除额外的数组,它应该没问题。

CakePlugin::loadAll(array(
    'MyPlugin' => array(
        'routes' => true
    )
));
于 2014-07-17T10:04:04.573 回答