2014-02-09 3 views
0

Панель навигации в моей заявке будет содержать User информацию (имя, профиль pic) и некоторые связанные данные. Поскольку панель навигации будет присутствовать во всем приложении, я помещаю свою логику в AppController::beforeRender(), чтобы передавать данные в View (в этом случае элемент nav_bar).Логика навигационной панели CakePHP

  1. Это подходящее место для реализации логики для получения информации о пользователях и связанных с ними данных ?.
  2. Какое из следующих способов является правильным способом загрузки данных модели User.

    public function beforeRender() { 
        $this->loadModel('User'); // this one 
        $this->User->find(...      
    
        ClassRegistry::init('User')->find(... // Or this one? 
    

ответ

2

Я хотел бы сохранить информацию пользователя в сессии, в противном случае вы будете обращаться к базе данных в каждом запросе.

Итак, что вы хотите сделать: в вашей функции login() вы получаете информацию о пользователе и сохраняете ее в сеансе. Затем, в вашем элементе, вы просто эхо-контент, который вы хотите от своего сеанса.

+0

Это хорошая идея, но есть некоторые дополнительные данные, которые могут меняться во время регистрации пользователя, если я храню данные в сеансе, нет способа узнать, изменились ли данные. –

+0

@ChristopherFrancisco вы можете изменять сеанс, когда захотите, где бы вы ни находились хотеть. –

-1

На ваш взгляд, используйте класс AuthComponent, чтобы получить доступ к информации о пользователе, например:

в havethe идентификатор пользователя: $use_id = AuthComponent::user('id');

иметь всю информацию о пользователе: $user = AuthComponent::user();

+1

Вы не используете компонент в представлении, вы нарушаете принцип MVC –

Смежные вопросы