Я использую торт 2.3.5. Я следил за руководством по Blog+Authentication на основном сайте. Я хочу изменить его так, чтобы приветственное сообщение отображалось в заголовке для всех страниц, поэтому мне нужно получить имя пользователя в 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']; ?>
Оба всегда возвращают ноль, и ничего не печатается, даже на страницах, где я успешно получаю имя пользователя в пользовательском представлении, устанавливая переменную php в UsersController на основе номера идентификатора, который инициировал функцию:
//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'];