带有 CakePHP 的插件中的路由



我有一个插件需要覆盖/的默认路由

我尝试这样做的文件位于应用程序/插件/安装/配置/路由.php

<?php
Router::connect('/', array('plugin' => 'install', 'controller' => 'installer', 'action' => 'index'));

这行不通。我还在引导程序中加载所有插件。 CakePlugin::loadAll();

我错过了什么吗?

[更新。此文件需要覆盖 APP/Config/routes 中的主路由.php文件.php。显然,更新主路由文件可以工作并显示正确的页面,但我正在尝试覆盖此文件而不是直接修改它。

我还没有尝试覆盖插件的默认路由 - 我有普通控制器 - 但我认为你的数组中需要'plugin'=>'install'或类似的东西。

编辑:手册中关于插件的这一点可能适用,我认为您的 loadAll 应该看起来像这样:

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

如果你想路由到一个插件,你应该指定它,Cake不会猜测你想要什么插件。

Router::connect('/', array('plugin' => 'install', 'controller' => 'installer', 'action' => 'index'));

稍后添加的路由将被首先定义的路由覆盖。

例如,路由"/"通常在应用程序/配置/路由中定义.php如果你想从你的"app/plugin/YOURPLUGIN/config/routes.php"覆盖它,你需要使用'Router::p romote'。

请参阅有关路由器::p romote 的文档

例如.app/plugin/YOURPLUGIN/config/routes.php

Router::connect(
'/',
array(
    'plugin' => 'YOURPLUGIN',
    'controller' => 'YOURPLUGIN_CONTROLLER',
    'action' => 'index'
));
Router::promote();

这会将插件的路由放在"/"的原始路由之前,从而首先匹配它。

相关内容

  • 没有找到相关文章

最新更新