CakePHP中控制器内部的控制器?
我会尽力解释的 构造管理员逻辑的最佳结构是什么(通过CakePHP使用MVC方法时) 我希望能够访问: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
-->显示了一个易于实现的仪表板视图:“admins”控制器中的“Index”方法www.website.com/admins/
-->当前客户列表。易于实现:“管理员”控制器中的“客户”方法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/loginJuhana,抱歉,还有一个问题。。我在检查授权时遇到了所有工作异常。。当没有授权的人(未登录或登录帐户没有足够的权限)时,AuthComponent应重定向到website.com/users/login,但改为:webiste.com/admin/users/login。。这将产生“缺少方法”错误。。有什么想法吗?嘿,谢谢你的回复!我使用了管理员路由方法,几乎可以让它工作了。我唯一的问题是让IsAuthorized方法正确重定向。。有什么建议吗?我已经在上面描述过了!您可以在管理控制器public$uses=array('Employee'、'Orders'、'Customers')中使用此变量
这样,您就可以在管理控制器中使用所有这些模型,并使用您的逻辑开始在应用程序中开发视图。(对不起,我的英语不好)