Проверка модели cakephp 3.x не отображается при сохранении данных в 2 таблицы
У меня есть две таблицы сотрудников и пользователей сотрудников имеет поле user_id отношение между ними, используя пользователя hasOne сотрудник и сотрудник принадлежит пользователю, у меня есть следующий код в моем файле просмотра
<?php
echo $this->Form->input('employee.name');
echo $this->Form->input('user.email');
echo $this->Form->input('user.username');
echo $this->Form->input('employee.employee_level');
?>
мой код EmployeeController
<?php
$employee = $this->Employees->newEntity($this->request->data);
$user = $this->Employees->Users->newEntity($this->request->data);
if ($this->request->is('post')) {
$employee = $this->Employees->patchEntity($employee, $this->request->data, [
'associated' => ['Users']
]);
if($this->Employees->save($employee)) {
$this->Flash->success(__('The employee has been saved.'));
} else {
$this->Flash->error(__('The employee could not be saved. Please, try again.'));
}
}
?>
Сохранение данных, если все идет хорошо и безупречно, но если есть какие-то ошибки проверки, например, имя пользователя уже существует или электронная почта уже существует, то просто показывает флэш-сообщение о том, что сотрудник не может быть сохранен, пожалуйста, попробуйте еще раз, чтобы не отображалось сообщение об ошибке проверки модели под полями, как показано на прикрепленном изображении, когда я пытаюсь сохранить данные в одной таблице
Пожалуйста, скажите мне, в чем проблема в моем представлении или файле контроллера, чтобы при наличии ошибок валидации в любой из двух моделей было отображено сообщение об ошибке в соответствующем поле
Извините за мой плохой английский Спасибо
1 ответ
Попробуйте это для своей формы. Вам не нужно указывать название модели верхнего уровня.
echo $this->Form->input('name');
echo $this->Form->input('user.email');
echo $this->Form->input('user.username');
echo $this->Form->input('employee_level');
И в вашем контроллере вы никогда не используете $user, так что нет смысла его создавать, и, поскольку вы исправляете сущность сотрудника данными запроса, вам не нужно инициализировать его таким же образом.
$employee = $this->Employees->newEntity();
if ($this->request->is('post')) {
$employee = $this->Employees->patchEntity($employee, $this->request->data, [
'associated' => ['Users']
]);
...