【问题标题】:Cakephp Admin Prefixed RoutingCakephp 管理员前缀路由
【发布时间】:2021-05-27 22:59:41
【问题描述】:

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

管理员/用户/:操作

我希望用户控制器驻留在名为“管理员”的控制器的子文件夹中。我知道如何使用 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

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

【问题讨论】:

    标签: cakephp cakephp-3.0 cakephp-2.0


    【解决方案1】:

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

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

    例如!

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

    这样,您可以在 admin 文件夹中使用控制器正常地遵循您的结构。

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

    【讨论】:

    • 这种方法意味着每个动作都必须被映射,我需要做的是让所有控制器动作都可以工作,而无需在路由中明确写入它们。我相信在 Cake v2 中这是不可能的。
    猜你喜欢
    • 2015-12-24
    • 2013-05-29
    • 2012-09-16
    • 2021-08-25
    • 1970-01-01
    • 2011-06-09
    • 2013-10-09
    • 2016-04-21
    • 2014-12-17
    相关资源
    最近更新 更多