Как создать многомодельную форму в Yii? Я просмотрел всю документацию Yii, но не получил интересных результатов. Может кто-нибудь дать мне какое-то направление или мысли об этом? Любая помощь будет заметна.
Мультимодельные формы в yii
Ответ 1
В моем опыте я получил это решение для работы и быстро понятным
У вас есть две модели для данных, которые вы хотите собрать. Скажем Person
и Vehicle
.
Шаг 1: Настройте контроллер для ввода формы
В контроллере создайте объекты модели:
public function actionCreate() {
$Person = new Person;
$Vehicle = new Vehicle;
//.. see step nr.3
$this->render('create',array(
'Person'=>$Person,
'Vehicle'=>$Vehicle)
);
}
Шаг 2: напишите файл просмотра
//..define form
echo CHtml::activeTextField($Person,'name');
echo CHtml::activeTextField($Person,'address');
// other fields..
echo CHtml::activeTextField($Vehicle,'type');
echo CHtml::activeTextField($Vehicle,'number');
//..enter other fields and end form
поместите некоторые ярлыки и дизайн на ваш взгляд;)
Шаг 3: Запись контроллера on $_POST
действие
и теперь вернитесь к контроллеру и напишите funcionality для действия POST
if (isset($_POST['Person']) && isset($_POST['Vehicle'])) {
$Person = $_POST['Person']; //dont forget to sanitize values
$Vehicle = $_POST['Vehicle']; //dont forget to sanitize values
/*
Do $Person->save() and $Vehicle->save() separately
OR
use Transaction module to save both (or save none on error)
http://www.yiiframework.com/doc/guide/1.1/en/database.dao#using-transactions
*/
}
else {
Yii::app()->user->setFlash('error','You must enter both data for Person and Vehicle');
// or just skip `else` block and put some form error box in the view file
}
Ответ 2
Вы можете найти несколько примеров в этих двух вики-статьях Yii:
Ответ 3
Вам не нужна мультимодель. Для правильного использования шаблона MVC требуется модель, которая отражает ваш пользовательский интерфейс.
Чтобы решить эту проблему, вам необходимо использовать CFormModel вместо ActiveRecord для передачи данных из View в Controller. Затем внутри вашего контроллера вы проанализируете модель, модель CFormModel, и используйте классы ActiveRecord (более одного) для сохранения в базе данных.
Обзор форм и Формы моделей в Yii Окончательный Руководство содержит некоторые детали и образцы.
Ответ 4
Другие предложения -
Также мы можем использовать Wizard Behavior, это расширение, упрощающее обработку многоэтапных форм. В котором мы можем использовать многомодельные формы для процесса процесса регистрации или другие.