我想在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语句都不起作用。
答案 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');
}