我真的不确定如何搜索这个,但我有一个网址
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'));
它有效。有人可以解释一下吗?
答案 0 :(得分:1)
http://api.cakephp.org/class/router#method-Routerconnect处的文档在解释这一点方面做得很好。
您所做的是创建自定义参数。 Cake使用数组来跟踪参数以及它如何知道哪个控制器,动作和其他参数已被传递。路由器会将包含3个斜杠(/)的任何网址转换为$param['site']
,$param['controller']
和$param['action']
。
您可以在控制器中使用$this->params['site']
检索:site的值。