CakePHP中控制器内部的控制器?

CakePHP中控制器内部的控制器?,cakephp,methods,controller,Cakephp,Methods,Controller,我会尽力解释的 构造管理员逻辑的最佳结构是什么(通过CakePHP使用MVC方法时) 我希望能够访问: www.website.com/admins/-->显示了一个易于实现的仪表板视图:“admins”控制器中的“Index”方法 www.website.com/admins/customers-->当前客户列表。易于实现:“管理员”控制器中的“客户”方法 www.website.com/admins/customers/add-->这是如何工作的 www.website.com/admin

我会尽力解释的

构造管理员逻辑的最佳结构是什么(通过CakePHP使用MVC方法时)

我希望能够访问:

  • www.website.com/admins/
    -->显示了一个易于实现的仪表板视图:“admins”控制器中的“Index”方法

  • www.website.com/admins/customers
    -->当前客户列表。易于实现:“管理员”控制器中的“客户”方法

  • www.website.com/admins/customers/add
    -->这是如何工作的

  • www.website.com/admins/customers/view/1
    -->还是这个?


我知道我的方法是错误的,因为我应该为每个区域(“客户”、“订单”、“员工”)配备一个控制器,这样每个区域都可以有自己的查看、编辑和添加方法。。但是,既然我希望它们都在
www.website.com/Admins
下,我该如何将它们都绑定到“Admins”控制器下呢?

这里的误解似乎是URL必须严格遵循
/Controller/action/parameters
模式,这是不正确的。这只是默认设置,您可以使用

甚至有这样一个例子:

许多应用程序需要具有特权的管理部分 用户可以进行更改。这通常是通过一个特殊的URL来实现的,比如 作为
/admin/users/edit/5
。在CakePHP中,前缀路由可以从 通过将前缀设置为 路由。前缀。请注意,尽管前缀与路由器相关, 将在
app/Config/core.php
中配置:

Configure::write('Routing.prefixes', array('admin'));
在您的控制器中,任何带有
admin\uuu
前缀的操作都将被调用。 使用我们的用户示例,访问URL
/admin/users/edit/5
将 调用我们的
UsersController的
admin\u edit
方法,将5作为 第一个参数。使用的视图文件将是
app/View/Users/admin\u edit.ctp


实际上,这意味着所有管理操作都与非管理操作一起位于单独的控制器(“客户”、“订单”等)中。从理论上讲,使用一个单独的管理控制器是可能的,但要复杂一些。

您可以使用两种解决方案

  • 使用管理插件
  • 使用管理路由(我建议这样做)

    要使用管理路由,您可以使用此文档

    您还可以使用console创建管理路由


  • 对于其他人来说,路由按照Juhana的建议工作得很好,但是为了让授权重定向在AppController的Auth组件中正常工作,我必须插入以下内容:

     'unauthorizedRedirect'    => array(
                    'controller' => 'users',
                    'action' => 'login',
                    'admin' => false
                ),
    

    这解决了当有人试图访问
    www.website.com/admin/orders
    时的问题,当我需要它重定向到
    www.website.com/admin/users/login
    时,它会重定向到
    www.website.com/users/login

    Juhana,抱歉,还有一个问题。。我在检查授权时遇到了所有工作异常。。当没有授权的人(未登录或登录帐户没有足够的权限)时,AuthComponent应重定向到website.com/users/login,但改为:webiste.com/admin/users/login。。这将产生“缺少方法”错误。。有什么想法吗?嘿,谢谢你的回复!我使用了管理员路由方法,几乎可以让它工作了。我唯一的问题是让IsAuthorized方法正确重定向。。有什么建议吗?我已经在上面描述过了!您可以在管理控制器
    public$uses=array('Employee'、'Orders'、'Customers')中使用此变量
    这样,您就可以在管理控制器中使用所有这些模型,并使用您的逻辑开始在应用程序中开发视图。(对不起,我的英语不好)