Мало кто знает это, но с помощью лития вы можете привязать форму к нескольким объектам.
В вашем контроллере вернуть как пользователя, так и контактный объект.Затем в вашей форме:
<?= $this->form->create(compact('user', 'contact')); ?>
Затем вы визуализируете поле формы определенного объекта, например:
<?= $this->form->field('user.name'); ?>
<?= $this->form->field('contact.email'); ?>
Когда пользователь отправляет форму, данные для обоих объектов будут сохраненыas:
$this->request->data['user'];
$this->request->data['contact'];
Вы можете использовать эту информацию для обновления базы данных, как обычно.Если вы хотите сохранить информацию только в том случае, если данные из обоих объектов действительны, вы можете вызвать validate следующим образом:
$user = Users::create($this->request->data['user']);
if($user->validates()) {
$userValid = true;
}
$contact = Contacts::create($this->request->data['contact']);
if($contact->validates()) {
$contactValid = true;
}
if($userValid && $userValid){
// save both objects
}
Надеюсь, что это поможет:)