我现在正在学习cakeHP。我正在尝试显示当前登录的特定用户名。
所以我所做的是:
public function beforeFilter() {
$username = '';
if($this->Auth->loggedIn()) {
$username = $this->Auth->user('username');
}
$this->globalUsername = $username;
}
我假设在任何一个页面中,我都可以将globalUsername作为变量访问?
这是正确的吗?或者有更好的方法吗?
非常感谢!
如果你想让网站上的所有页面都能访问它,你必须在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;
$this->set(compact('username'));
试试这个,这样你就可以在你的视图中使用$username了。
浏览博客教程和/或文档:
$this->set('username', $username);
为什么不以默认布局从会话中提取信息?无需将其写入控制器。
$username = AuthComponent::user('username');