问题描述
在我的 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