2011-06-18 63 views
0

我真的不甚至不确定究竟如何寻找这一点,但我有一个URLCakePHP的 - 用通配符路由(未找到控制器错误)

site.com/forum/controller/action 

凡论坛是一个插件,我现在有它的路由与

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

但是成功的插件的论坛,我想补充一点,将任何顶级子目录连接到插件论坛的路线。例如,

site.com/fish/controller/action 
site.com/bird/controller/action 

都将路由到论坛插件。同样,

site.com/bird 

也将路由到论坛插件。这是我已经能够拿出最好的,它没有任何效果(我得到一个“FishController找不到”:

Router::connect('/*/:controller/:action/*', array('plugin' => 'forum')); 

最接近的答案,我能找到的基本上说,这也许是不可能的? http://cakephp.1045679.n5.nabble.com/Routes-with-wildcards-missing-controller-errors-td1263632.html

编辑:一些更多的试验&错误后我尝试这样做:?

Router::connect('/:site/:controller/:action/*', array('plugin' => 'forum')); 

和它的作品有人能解释这个

回答

1

http://api.cakephp.org/class/router#method-Routerconnect的文档在解释这个方面做得很好。

你所做的是创建一个自定义参数。 Cake使用一个数组来跟踪参数,以及它如何知道传递了哪个控制器,动作和其他参数。路由器将用3个斜杠(/)将任何URL转换为$param['site'],$param['controller']$param['action']

从您的控制器中,您可以使用$this->params['site']检索网站的值。

+0

再次感谢...再:) –