【发布时间】:2014-02-19 00:44:21
【问题描述】:
我目前正在使用 cake 的路由配置来设置管理员视图,这与非管理员用户的不同。我阅读了文档(蛋糕)的路由章节,偶然发现了前缀路由。我认为这是我需要使用的东西,来完成我需要的东西。所以我开始按照建议设置 config/core.php,并取消注释
Configure::write('Routing.prefixes', array('admin'));
然后,我在 routes.php 中添加了一条路由:
Router::connect('/admin', array('controller' => 'donors', 'action' => 'index', 'admin' => true));
据我了解,通过上述设置,我可以为管理员定义特定操作,名称如:admin_index 或 admin_view 等。
所以我的 AppController 有一个这样的组件集:
public $components = array(
'DebugKit.Toolbar',
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'donors',
'action' => 'index'
),
'authError' => 'Access Denied',
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'authorize' => array('Controller')
)
);
因此,当非管理员用户登录时,他应该被重定向到“donors/index”,而当管理员登录时,我想将他重定向到“donors/admin_index”。我该怎么做?
我试过了:
public function beforeFilter(){
if(isset($this->params['admin'])){
$this->layout = 'stafflayout';
$this->Auth->loginRedirect = array(
'controller'=>'donors',
'action'=>'index',
'prefix'=>'admin',
'admin'=>true
);
}
在测试它的过程中,乍一看,我认为它有效。但是 URL 不会像 'donor/admin_index .. 那样改变,并且仍然被重定向到donor/index 或等效项,只是重定向到 /donors... 为什么这不起作用?
(第二个问题)同样在测试的过程中,我将Auth组件LoginRedirect的控制器和操作更改为
'控制器'=>'帖子'
和
'动作'=>'索引'
除了'donors'、'index'之外,当我登录时,我仍然被重定向到donors/index..是否应该将我重定向到'posts/index'
谁能帮我解决这两个问题?主要问题更重要!
【问题讨论】:
-
对不起,先生。您(或任何其他有经验的用户是否愿意提供帮助)与其他初学者分享这些精美的文档,比如我,好吗?提前谢谢你。
-
你去吧.. book.cakephp.org/3.0/en/development/routing.html#prefix-routing 要了解前缀路由在 cake 中的工作原理,请查看提供的文档