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 に答える