У меня есть действие входа в систему под моим контролем. Сессии создаются для 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'));
}
}
}
Ну, просто получите столбцы, затем цикл и присваивание:
$towns = array('name', 'country', 'localisation', 'statut');
foreach($towns as $column) {
$this->Session->write(
'Auth.Town.' . $column,
$this->User->Town->field($column)
);
}
Как я проверял
$this->Session->read('Auth.User.Town.name');
должно быть имя, которое вы хотите иметь