我对 Cake 很陌生,正在使用 Cake 2.0,我已经烘焙了我的视图、控制器等......
我想要做的是进入我的视图并围绕Edit
和Delete
操作包装一些逻辑,并且只将它们显示给登录的管理员。
这听起来像正确的方法吗?我已经锁定了这些操作,以便只有管理员可以访问它们,但我不想向非管理员显示这些按钮。
另外,我不认为为普通用户和管理员提供单独的视图是正确的方法,但我可能是错的。
我对 Cake 很陌生,正在使用 Cake 2.0,我已经烘焙了我的视图、控制器等......
我想要做的是进入我的视图并围绕Edit
和Delete
操作包装一些逻辑,并且只将它们显示给登录的管理员。
这听起来像正确的方法吗?我已经锁定了这些操作,以便只有管理员可以访问它们,但我不想向非管理员显示这些按钮。
另外,我不认为为普通用户和管理员提供单独的视图是正确的方法,但我可能是错的。
您可以尝试在 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');
}
可以将变量传递给视图并检查它以显示命令。
控制器:
...
$this->set('admin', true); //user is an admin and should view the links
...
看法:
...
if ($admin){echo $this->Html->link('Edit', array('action' => 'edit'))}
...