cakePHP使用两个控制器进行路由

时间:2015-08-28 13:10:27

标签: php cakephp routing routes url-routing

我使用了cakePHP框架。我在cakephp中遇到了路由问题。

我有两个控制器“管理员”和“用户”。

我在“用户”控制器中为“管理员”控制器编写了一些方法。见下面的例子。

class UsersController {
    public function admin_index() {
       my_code
    }
}

class AdminsController {
    My methods
}

根据cakephp路由规则,如果我想使用admin控制器中的admin_index方法而不是使用以下URL:

site_url/admin/users/index

我想从上面的网址中删除admin关键字。

我在谷歌搜索了很多,但我没有得到任何适当的解决方案。

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如果您需要使用AdminsController中的admin_index,那么您的网址应为site_url/admin/admins/index

另请在core.php文件中检查此行:

https://github.com/cakephp/cakephp/blob/2.5/app/Config/core.php#L152

如果你需要在AdminsController中使用site_url/admin/users/index作为admin_index方法,那么我宁愿从核心文件中禁用路由并再次写入路由。

请阅读此内容CakePHP - Routing Using 'admin_' Prefix。可能会有所帮助

答案 1 :(得分:0)

我找到了解决方案。

路由器连接中的用户前缀

Router::connect('/:controller/:action/*', array('prefix' => 'admin', 'admin' => true, 'controller' => 'admins'));

如果你想在你的参数上添加一个条件,比如(':action'是'addUser':在这个例子中,这个路由器仅在它的动作是'addUser'时才起作用)而不是使用下面的代码

Router::connect('/:controller/:action/*', array('prefix' => 'admin', 'admin' => true, 'controller' => 'admins'),
                                          array('action'=>'index|edit'));