我正在使用蛋糕 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'];