Cake PHP: как сделать одну переменную доступной для всех представлений и элементов - PullRequest
0 голосов
/ 26 августа 2010

Я хочу получить доступ

  • идентификатор текущего зарегистрированного пользователя
  • имя текущего зарегистрированного пользователя
  • group_id текущего зарегистрированного пользователя
  • group_name текущего зарегистрированного пользователя

для просмотра файлов, для включения и выключения меню и вкладок в соответствии с group_id.

Как я могу достичь этого с минимальными потерями производительности?

Спасибо

Ответы [ 3 ]

4 голосов
/ 26 августа 2010

Если вы используете AuthComponent, он сохранит запись текущего пользователя, вошедшего в систему, в сеансе под ключом Auth.Вы можете получить к нему доступ через компонент сеанса или помощника:

$this->Session->read('Auth.User.name')

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

В остальном и вообще класс Configure обычно является хорошим местом для хранения такого рода глобальной информации:

Configure::write('User', array('id' => $id, ...));

Configure::read('User.id');
2 голосов
/ 26 августа 2010

Что я всегда делаю, так это создаю AppHelper и создаю метод для этого. Конечно, это похоже на ответ deceze, но сокращает код, который вам нужно написать;)

function user($key) {
   $user = $this->Session->read('Auth.User');
    if (isset($user[$key])) {
     return $user[$key];
    }
   return false;
 }  

Затем вы можете вызвать идентификатор пользователя с помощью $ this-> Html-> user ('id');

1 голос
/ 26 августа 2010

Возможно, вы можете установить переменные, которые вы хотите, в вашем AppController (расширенном всеми подконтроллерами). После этого вы сможете получить к ним доступ из всех представлений, но будьте осторожны, чтобы назвать их уникально. CakePHP book - App Controller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...