从cakephp中的视图访问admin auth组件

时间:2012-08-12 22:20:50

标签: php mysql cakephp

我想在default.ctp页面上显示一个指向管理面板的链接,但前提是用户是管理员。

我试图做这样的事情,但似乎没有发生任何事情

//default.ctp
if (!empty($role) && ($role == 'admin')) { 
   link here
} 

在我的appFtroller中的beforeFilter功能中,我有以下内容

$role = $this->Auth->user('role'); 
    if ($role == 'author' || $role == 'admin') { 
        $this->set('role', $role); 
    } 

当我尝试print_r($ admin)时,会显示admin角色,但无论出于何种原因,if语句都不起作用。

2 个答案:

答案 0 :(得分:1)

尝试使用:

$this->Session->read('Auth.User.role');

在视图文件中。

您只需直接从会话中读取值,而不是设置新变量。

答案 1 :(得分:0)

您可以尝试在AppController的beforeFilter()方法中使用以下代码段:

function beforeFilter()
{
     $role = $this->Auth->user('role'); 
     if ($role == 'author' || $role == 'admin') { 
         $this->set('role', $role); 
     } 

     if($role == 'admin')
     {
         $this->set('is_admin', true);
     }
     else
     {
         $this->set('is_admin', false);
     }
    /***** your remaining code *******/

}

在您看来,只需使用以下内容:

 if($is_admin)
 {
      $this->Html->link('Admin Link', 'controllers/view');
 }