0

我正在使用蛋糕 2.3.5。我按照主网站上的博客+身份验证教程进行操作。我想更改它,以便在所有页面的标题中显示欢迎消息,因此我需要在 default.ctp 中获取用户名。

我试过这些方法:

//these don't work..

//in default.ctp
<div>Signed in as: <?php echo AuthComponent::user('username'); ?></div>

<?php $user = $this->Session->read('Auth.User');
echo $user['username']; ?>

两者都始终返回 null,并且没有任何内容被打印,即使在我通过根据启动函数的 id 号在 UsersController 中设置 php 变量成功地在用户视图中获取用户名的页面上也是如此:

//this works..

//in UsersController
$this->set('user', $this->User->read(null, $id));

//in users/view
<div>Signed in as: <?php echo $user['User']['username']; ?></div>

如何在 default.ctp 中获取登录用户数据?

编辑:

我有这个问题:

    $user = $this->Session->read('Auth.User');
    $this->set('user', $user);

如果我将此代码默认设置:

echo $user['username'];

它在 home.ctp 中工作,但在任何用户视图中都会引发“索引不存在错误”。如果我将代码更改为:

echo $user['User']['username'];

我遇到了相反的问题(适用于用户视图,但在主页上引发错误)。

我试着把它放在 AppController 中:

    $user = $this->Session->read('Auth.User');
    if (array_key_exists('User', $user))
        $user = $user['User'];
    $this->set('user', $user);

但什么都没有改变。

解决方案:

这是最简单的方法:

//in default.ctp
$user = AuthComponent::user();
$username = $user['username'];
4

2 回答 2

1

在 AppController 的 beforefilter 中使用

function beforeFilter(){
    $user = $this->Session->read('Auth.User');
    $this->set('username', $user['username']);
}

现在,在 default.ctp 你可以访问 $username;

于 2013-09-10T18:37:27.747 回答
-1

最简单的方法是使用AuthComponent::user();

于 2013-09-10T18:44:38.783 回答