Торт php и использование auth в макете


Я использую компонент auth, и он работает нормально. Но в моем макете по умолчанию перед контентом у меня есть меню, которое отличается, если пользователь вошел в систему. Поэтому я хочу определить, вошел ли пользователь в систему или нет - Обычно я использую $this->Auth->user('id'), но $this->Auth не работает в макете (он работает только в представлении, какой контроллер использует компонент Auth).

Как это сделать?

2 4

2 ответа:

Вы можете прочитать данные Auth из сеанса. Что-то вроде:

$user = $session->read('Auth'); 

Не забудьте добавить помощник сеанса в свой AppController.

var $helpers = array('Session');

В beforeRender () просто вызовите

$this->set('userData', $this->Auth->user());

И установите данные в представление и выполните свои проверки в представлении.

Чтобы получить данные в макете, необходимо вызвать метод beforeRender() в AppController.

Передача его через сеанс-не очень хорошая идея, ИМХО. Это может быть не совсем обычный случай, но, по крайней мере, я предпочитаю делать вещи твердыми: если вы используете сеанс для этого, ваш код потерпит неудачу в системе, которая не использует сеанс (auth без состояния). В целом я не большой поклонник доступа к сеанс в представлении вообще. Сессия для меня больше похожа на источник данных.