我有一个插件需要覆盖/的默认路由
我尝试这样做的文件位于应用程序/插件/安装/配置/路由.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();
这会将插件的路由放在"/"的原始路由之前,从而首先匹配它。