0

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

我正在尝试做这样的事情,但似乎什么都没有发生

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

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

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

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

4

2 回答 2

1

尝试使用:

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

而是在视图文件中。

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

于 2012-08-13T03:50:23.497 回答
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');
 } 
于 2012-08-13T04:27:50.770 回答