Торт php и использование auth в макете
Я использую компонент auth, и он работает нормально. Но в моем макете по умолчанию перед контентом у меня есть меню, которое отличается, если пользователь вошел в систему. Поэтому я хочу определить, вошел ли пользователь в систему или нет - Обычно я использую $this->Auth->user('id'), но $this->Auth не работает в макете (он работает только в представлении, какой контроллер использует компонент Auth).
Как это сделать?
2 ответа:
Вы можете прочитать данные Auth из сеанса. Что-то вроде:
$user = $session->read('Auth');
Не забудьте добавить помощник сеанса в свой AppController.
var $helpers = array('Session');
В beforeRender () просто вызовите
$this->set('userData', $this->Auth->user());
И установите данные в представление и выполните свои проверки в представлении.
Чтобы получить данные в макете, необходимо вызвать метод
beforeRender()
в AppController.Передача его через сеанс-не очень хорошая идея, ИМХО. Это может быть не совсем обычный случай, но, по крайней мере, я предпочитаю делать вещи твердыми: если вы используете сеанс для этого, ваш код потерпит неудачу в системе, которая не использует сеанс (auth без состояния). В целом я не большой поклонник доступа к сеанс в представлении вообще. Сессия для меня больше похожа на источник данных.