2

我对 Cake 很陌生,正在使用 Cake 2.0,我已经烘焙了我的视图、控制器等......

我想要做的是进入我的视图并围绕EditDelete操作包装一些逻辑,并且只将它们显示给登录的管理员。

这听起来像正确的方法吗?我已经锁定了这些操作,以便只有管理员可以访问它们,但我不想向非管理员显示这些按钮。

另外,我不认为为普通用户和管理员提供单独的视图是正确的方法,但我可能是错的。

4

2 回答 2

3

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

function beforeFilter()
{
     $role = $this->Auth->user('role'); //If you are using Auth
     //$this->Session->read('User.role'); // If you are using a normal login session.
     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-14T04:53:19.463 回答
2

可以将变量传递给视图并检查它以显示命令。

控制器:

...
$this->set('admin', true); //user is an admin and should view the links
...

看法:

...
if ($admin){echo $this->Html->link('Edit', array('action' => 'edit'))}
...
于 2012-08-13T19:08:49.633 回答