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

У меня есть действие входа в систему под моим контролем. Сессии создаются для Auth.User, но не для Auth.Town. Мне нужно создавать сессии. У меня есть несколько полей в таблице городов, и я не хочу создавать 50 строк. Как я могу сделать это проще? Мне нужно упростить это.

UsersController:

    public function login() {
if ($this->request->is('post')) {
if (isset($this->request->data['UserLogin'])) {
$this->request->data['User'] = $this->request->data['UserLogin'];
}

if ($this->Auth->login()) {

$this->Session->write(
'Auth.Town.name',
$this->User->Town->field('name')
);

$this->Session->write(
'Auth.Town.country',
$this->User->Town->field('country')
);

$this->Session->write(
'Auth.Town.localisation',
$this->User->Town->field('localisation')
);

$this->Session->write(
'Auth.Town.statut',
$this->User->Town->field('statut')
);return $this->redirect($this->Auth->redirect());

}else{

$this->Session->setFlash("L'adresse électronique ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));

}
}
}

0

Решение

Ну, просто получите столбцы, затем цикл и присваивание:

$towns = array('name', 'country', 'localisation', 'statut');
foreach($towns as $column) {
$this->Session->write(
'Auth.Town.' . $column,
$this->User->Town->field($column)
);
}
0

Другие решения

Как я проверял

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

должно быть имя, которое вы хотите иметь

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector