在.ctp文件中访问全局变量?

时间:2014-10-07 01:12:42

标签: php cakephp

我正在学习cakePHP。我正在尝试显示当前登录的特定用户名。

所以我所做的就是:

public function beforeFilter() {
    $username = '';
    if($this->Auth->loggedIn()) {
        $username = $this->Auth->user('username');
    }
    $this->globalUsername = $username;
}

我假设在任何页面中我都应该能够将globalUsername作为变量访问?

这是正确的还是有更好的方法呢?

非常感谢!

4 个答案:

答案 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');