2013-02-13 3 views
4

Я хотел бы знать, как я могу перезагрузить массив (Auth.User) после того, как пользователь обновил свою информацию.Обновить массив пользовательских сеансов после редактирования информации CAKEPHP

В настоящий момент это не произойдет, пока пользователь не выйдет из системы, а затем обратно, поскольку он загружает массив (Auth.User).

До сих пор я пробовал несколько решений such as.

Я также попытался добавить $user = $this->User->field('name', array('User.id' => $this->Session->read('Auth.User.id'))); $this->Session->write('Auth.User', $user); в контроллер приложения.

Но ни один из них не был успешным.

Thanks

ответ

6

Вы здесь. Помните, что возвращаемый массив $user содержит ключ «User», например:

array(
    'User' => array(
    'id' => 1 
) 
) 

Так сохранить его на сессии в Auth.User фактически сохранить массив сеанса, как так:

array(
    'Auth' => array(
    'User' => array(
     'User' => array(
     'id' => 1 
    ) 
    ) 
) 
) 

Вместо этого, сохранить он в ключ Auth, и вы можете продолжать доступ к нему как обычно:

$user = $this->User->field('name', array(
    'User.id' => $this->Session->read('Auth.User.id') 
)); 
$this->Session->write('Auth', $user); 

Теперь, когда ключи сессии прояснилось, есть намного проще и быстрее способ повторной регистрации пользователя, так как mark говорит в комментариях: используйте $this->Auth->login().

$user = $this->User->field('name', array(
    'User.id' => $this->Session->read('Auth.User.id') 
)); 
$this->Auth->login($user); 
+7

Вы также можете использовать $ this-> Auth-> login ($ user); так как это также обновит данные сеанса аутентификации – mark

+0

Да, это определенно изящно. Я добавлю это к ответу. Мой мозг все еще застрял в 1.3. – jeremyharris

+0

Большое спасибо, ребята, работали шармом – iwj145

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