2015-12-21 5 views
0

У меня есть две таблицы, сотрудники и сотрудники пользователей имеют поле user_id отношение между ними us user hasOne сотрудник и сотрудник принадлежит пользователю, у меня есть следующий код в моем файле видаcakephp 3.x проверка модели не отображается при сохранении данных на 2 таблицы

<?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.')); 
      } 
     } 
?> 

спасительных данные, если все, что идет хорошо и совершенным, но если есть какая-то ошибка проверки, как имя пользователь уже существует или по электронной почте уже существует, чем просто шоу флэш сообщения этот сотрудник мог бы ВЗ быть сохранены, пожалуйста, попробуйте еще раз его не выдавалось сообщение об ошибке проверки модели под полями, как показано на прилагаемом изображении, когда я пытаюсь сохранить данные в одной таблице enter image description here

Пожалуйста, скажите мне, что это проблема в моем представлении или контроллер файл, так что если какой-либо из двух моделей имеет ошибки проверки, чем сообщение об ошибке шоу под соответствующей области

Извините за мой плохой английский Спасибо

ответ

1

Попробуйте это для вашей формы. Вам не нужно указывать имя модели верхнего уровня.

echo $this->Form->input('name'); 
echo $this->Form->input('user.email'); 
echo $this->Form->input('user.username'); 
echo $this->Form->input('employee_level'); 

И в контроллере, вы никогда не использовать $ пользователя, поэтому нет смысла в его создании, и так как вы заплаты объекта сотрудника с данными запроса, вам не нужно инициализировать его таким же образом ,

$employee = $this->Employees->newEntity(); 
if ($this->request->is('post')) { 
    $employee = $this->Employees->patchEntity($employee, $this->request->data, [ 
     'associated' => ['Users'] 
    ]); 
... 
+0

Спасибо, что ее решить мою проблему, вы удивительные просто упомянуть этот ответ, утвержденный ответа у меня есть еще один вопрос, если вы можете помочь мне, что синтаксис в силе для многих полех типа, таких как Form-> input ('image.0.image');?>, Form-> input ('image.1.image');?> и что такое код контроллера для этого –

+0

Все это подробно описано в [руководстве] (http://book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-data). –

+0

Большое спасибо моему другу, не могли бы вы рассказать мне, как печатать детали связанного значения данных с помощью paginate как таблицы employee, имеет идентификатор пользователя, а у пользователя теперь есть role_id, когда я использую код $ this-> paginate ($ this-> Employees) чем я хочу получить имя роли, которые относятся к пользовательской таблице, когда я печатаю его запрос и запускаю в phpmyadmin его отображение детали, но когда я использую код для пользователя $ employee-> has ('user')? $ employee-> user-> email: "", чем его распечатать электронное письмо от пользователя, но как распечатать таблицу ролей simillar по этому адресу спасибо –