CakePHP 2 - 在视图中检查用户是否已登录

4

根据用户是否登录,我需要一个显示元素 - 在CakePHP 2.0中

这个不起作用

<?php
  if ($this->Auth->loggedIn() 
    { 
    echo $this->element('user');
    }

  else 
    {
    echo $this->element('guest');
    } 
?>

谢谢

4个回答

15

遵循MVC模式并将逻辑放在控制器中。

在控制器中:

$this->set( 'loggedIn', $this->Auth->loggedIn() );

在视图中:

if( $loggedIn ) { 
    echo $this->element( 'user' );
}
else {
    echo $this->element( 'guest' );
} 

4

使用会话助手(在“登录教程”中所示的身份验证所必需):

if ($this->Session->read('Auth.User')) {
    echo 'logged';
} else {
    echo 'guest';
}

1
我总是明确地使用$this->Session->read('Auth.User.id')(id 应该永远不会为空,但你永远也不知道)。 - mark

2

试试这个:

$element = (AuthComponent::loggedIn()) ? 'user' : 'guest';
echo $this->element($element);

与您之前尝试的非常相似,但是需要静态调用loggedIn方法。

这会引发“Error: Call to undefined method View::user()”错误。 - ptica

0
!$this->Session->check('marketplace_showlink'

如果以上代码中出现错误,该错误是在appcontroller中编写的

例如:
调用非对象成员函数check()

这是由于空会话变量而生成的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接