我有一个插件需要覆盖/
的默认路由我试过的文件是APP / Plugin / Install / Config / routes.php
<?php
Router::connect('/', array('plugin' => 'install', 'controller' => 'installer', 'action' => 'index'));
哪个不起作用。我也在我的bootstrap中加载所有插件。 CakePlugin::loadAll();
我错过了什么吗?
[UPDATE。此文件需要覆盖APP / Config / routes.php中的主要routes.php文件。显然更新主路由文件工作并显示正确的页面,但我试图覆盖此文件而不是直接修改它。]
答案 0 :(得分:2)
我没有尝试覆盖插件的默认路由 - 我有普通控制器 - 但我认为你需要'plugin'=>'install'
或者你的数组中的某些东西。
修改强> This bit about plugins in the manual可能适用,我认为你的loadAll应该是这样的:
CakePlugin::loadAll(array(
'Install' => array('routes' => true)
));
答案 1 :(得分:1)
如果你想路由到插件你应该指定它,Cake不会猜到你想要的插件。
Router::connect('/', array('plugin' => 'install', 'controller' => 'installer', 'action' => 'index'));
答案 2 :(得分:1)
稍后添加的路由将被首先定义的路由覆盖。
e.g。路径'/'通常在app / config / routes.php中定义 如果你想从'app / plugin / YOURPLUGIN / config / routes.php'覆盖它,你需要使用'Router :: promote'。
请参阅documentation on Router::promote
e.g。应用程序/插件/ YOURPLUGIN /配置/ routes.php文件
Router::connect(
'/',
array(
'plugin' => 'YOURPLUGIN',
'controller' => 'YOURPLUGIN_CONTROLLER',
'action' => 'index'
));
Router::promote();
这会将插件的路由放在原始路由之前为'/',从而首先匹配它。