我正在学习cakePHP。我正在尝试显示当前登录的特定用户名。
所以我所做的就是:
public function beforeFilter() {
$username = '';
if($this->Auth->loggedIn()) {
$username = $this->Auth->user('username');
}
$this->globalUsername = $username;
}
我假设在任何页面中我都应该能够将globalUsername作为变量访问?
这是正确的还是有更好的方法呢?
非常感谢!
答案 0 :(得分:1)
如果您希望网站上的所有页面都可以访问它,您必须在AppController中执行此操作。
class AppController extends Controller {
public $globalUsername;
public function beforeFilter() {
$username = ($this->Auth->loggedIn()) ? $this->Auth->user('username') : NULL;
$this->globalUsername = $username;
}
}
另外,我刚刚将它转换为IF语句的简写版本。您也可以像最初一样使用完整版本。重要的是在方法之外声明公共变量。
现在,在任何.ctp文件中,首先检查变量是否为NULL。然后只需回显$this->globalUsername;
答案 1 :(得分:1)
$this->set(compact('username'));
尝试此操作,以便在视图中使用$ username。
答案 2 :(得分:0)
浏览博客教程和/或文档:
$this->set('username', $username);
答案 3 :(得分:0)
为什么不在默认布局中从会话中提取信息?无需在控制器中写入。
$username = AuthComponent::user('username');