我想为按钮制作if子句。如果管理员已登录,则不会显示。
if($this->Session->User['role'] == 'admin') {
echo
'<li> <a href="/VAG/dashboard"><ul class="pull-right">Admin skiltis</ul></a></li>';
}
我无法从会话中获得该角色,如果是管理员则不进行比较..
答案 0 :(得分:1)
直接使用$_SESSION['Auth']['User']
是一种不好的做法,因为取决于AuthComponent
的配置方式,它可能无法使用。
您最好将经过身份验证的用户从控制器传递到视图,然后只检查他的属性:
AppController的:
$authenticated_user = $this->Auth->user();
if(isset($authenticated_user))
{
$this->set(compact('authenticated_user'));
}
查看:
if(isset($authenticated_user) && $authenticated_user['role'] == 'admin'){
...
}
顺便说一下,您还应该使用视图中的HtmlHelper
来生成链接,而不是使用硬编码的网址手动打印<a>
标记,以便从许多Cake功能中受益。
答案 1 :(得分:0)
尝试对代码进行一些调试。
首先检查您的会话是否已启动。 您可以通过执行命令“session_status()”来执行此操作,如果结果为“PHP_SESSION_NONE”,则会话未启动。您可以通过在页面进行任何打印之前添加“session_start()”来修复它。
答案 2 :(得分:-2)
如果print_r($_SESSION);
的值类似,
Array ( [Config] => Array ( [userAgent] => 4df452d8263aa05ef9324f37499322b0 [time] => 1401090120 [countdown] => 10 ) [Message] => Array ( ) [Auth] => Array ( [User] => Array ( [id] => 8 [username] => aaaaa [email] => aaa@gmail.com [role] => admin [created] => 2014-05-26 02:43:20 [modified] => 2014-05-26 02:43:20 [status] => 1 ) ) )
尝试使用此代码,我认为它会起作用,
if($_SESSION['Auth']['User']['role'] == 'admin') {
echo
'<li> <a href="/VAG/dashboard"><ul class="pull-right">Admin skiltis</ul></a></li>';
}