访问.ctp文件中的全局变量


Accessing global variable in your .ctp file?

我现在正在学习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');