Cakephp 管理员前缀路由

问题描述

在我的 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

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

解决方法

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

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

例如!

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...