Cakephp 管理员前缀路由

时间:2021-05-27 22:59:41

标签: cakephp cakephp-3.0 cakephp-2.0

在我的 Cakephp 应用程序中,我希望有以下网址:

admin/users/:action

我希望 UsersController 位于名为“admin”的 Controllers 子文件夹中。我知道如何使用 Cake 3 和 4 实现这一点,但在这种情况下,我正在使用一个遗留的 Cake2 项目。我已经阅读了 Cake2 书中关于路由器的章节,但它似乎通过使用单个主控制器在控制器操作前加上“admin”来解决这个问题。

这不是我需要的,我正在寻找以下内容:

Controllers
     - [Admin]
          - UsersController
     - UsersContrller

即 - 两个控制器和子文件夹。

我可以按如下方式匹配路由,但我无法弄清楚要使用的参数:

Router::connect(
    '/integrations/foo/:controller/:action/*',
    []
);

其中“integrations”是我的插件,“foo”是子文件夹。我怀疑这在 Cake2 中是否真的可行。我发现 2013 年的一个旧问题说不再支持控制器的子目录,但我不确定这是否是一个有效的陈述。

CakePHP controllers and models in subdirectory

这可能需要通过服务器级别的重定向来完成吗?

1 个答案:

答案 0 :(得分:0)

在您的 routes.php 中,执行以下操作:

Router::connect('/admin',array('controller' => 'users', 'action' => 'login', 'admin' => true));

例如!

这会将您重定向到:yoursite.com/admin

通过这种方式,您可以使用 admin 文件夹中的控制器正常遵循您的结构。

在我给出的例子中,它看起来像这样:admin/users/login.php