2014-01-27 48 views
1

我目前使用cake的路由配置为了设置管理视图,不同于非管理员用户。我阅读了文档的路由章节(cake的),并偶然发现了前缀路由。我认为这是我需要用来完成我所需要的东西。所以我建立的config/core.php中的建议开始的,这注释掉CakePHP - 使用'admin_'路由前缀

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/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 ..'那样改变,并且仍然被重定向到捐助者/索引或等价物,简单地给/ donors ...为什么这不起作用?

(seconndary问题)亦测试了这一点的过程中,我改变在控制器和验证部件LoginRedirect的行动

“控制器” =>“帖”

'动作'=> '索引'

其他然后'捐助者','索引',当我登录时,我仍然被重定向到捐助者/索引..是否应该重定向我'posts/index'

任何人都可以帮助我在这些两个问题?主要问题虽然更重要!

+0

对不起,先生。你会(或者其他有经验的用户有足够的帮助)与其他初学者分享那些优秀的文档,像我一样吗?我提前谢谢你。 –

+1

你去那里.. http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing 要了解路由的蛋糕怎么前缀的作品,经过您的回复提供 – LogixMaster

回答

4

那么代码是好的!

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

只要/ url被写入url中,上面就会渲染/ donors/index页面。

现在,如果你想添加前缀像/供体/ admin_index,那么你必须创建一个多个规则,如:

Router::connect('/donors/admin_index', array('controller' => 'donors', 
'action' => 'index', 'admin' => true)); 

,并在beforeFilter功能

if(isset($this->params['admin'])){ 
      $this->layout = 'stafflayout'; 
      $this->Auth->loginRedirect = array(
       'controller'=>'donors', 
       'action'=>'admin_index', 
       'admin'=>true 
      ); 

上面的代码会重定向to/donors/admin_index and routing will render/donors/index page

+1

感谢文档。然后,我必须无知地误解(假定)将管理员cofig键设置为true时,我告诉蛋糕期待admin_前缀!我的错! – LogixMaster

+0

Iinjoy ...这是我学习的一部分......在这种情况下 – Anubhav

+0

好,我仍然被重定向到捐助者/索引时管理日志!看来,这 - $> PARAMS [“管理”]没有被设置莫名其妙,因为不执行该块..我重写的AppController在UsersController的beforeFilter,但我呼吁家长:: beforeFilter,所以我认为它应该执行!有关这个的任何想法? – LogixMaster