我会尽力解释这个......
什么是最佳结构(通过CakePHP使用MVC方法)来构建管理员逻辑?
我希望能够访问:
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
下?
答案 0 :(得分:1)
这里的误解似乎是URL必须严格遵循/controller/action/parameters
模式,这不是真的。它只是默认值,您可以使用router将其更改为您想要的任何内容。
The Cookbook甚至为这个确切的案例提供了一个示例:
许多应用程序需要具有特权的管理部分 用户可以进行更改。这通常通过特殊的URL来完成 为
中配置/admin/users/edit/5
。在CakePHP中,可以启用前缀路由 通过设置前缀来在核心配置文件中 Routing.prefixes。请注意,前缀虽然与路由器有关,但 将在app/Config/core.php
:Configure::write('Routing.prefixes', array('admin'));
在您的控制器中,将调用任何带有
admin_
前缀的操作。 使用我们的用户示例,访问URL/admin/users/edit/5
即可 调用我们admin_edit
的方法UsersController
作为传递5 第一个参数。使用的视图文件是app/View/Users/admin_edit.ctp
。
在实践中,这意味着所有管理操作都在单独的控制器中("客户","订单"等)以及非管理员操作。理论上可以使用单独的管理控制器,但有点复杂。
答案 1 :(得分:1)
你可以使用2种解决方案
使用管理路由(我推荐这个)
使用管理路由,您可以使用此文档 http://book.cakephp.org/2.0/en/development/routing.html
您也可以使用控制台创建管理路由
答案 2 :(得分:0)
对于任何其他人来说,路由工作很好,如Juhana所建议,但为了让我的AppController中的Auth组件中的授权重定向正常工作,我不得不插入:
'unauthorizedRedirect' => array(
'controller' => 'users',
'action' => 'login',
'admin' => false
),
这解决了有人试图访问www.website.com/admin/orders
的问题,当我需要将其重定向到www.website.com/admin/users/login
时,它会重定向到wwww.website.com/users/login