Как создать многомодельную форму в Yii? Я просмотрел всю документацию Yii, но не получил интересных результатов. Может кто-нибудь дать мне какое-то направление или мысли об этом? Любая помощь будет заметна.
По моему опыту я получил это решение для работы и быстро понял
У вас есть две модели для данных, которые вы хотите собрать. Скажем, Person
и Vehicle
.
В контроллере создайте объекты модели:
public function actionCreate() { $Person = new Person; $Vehicle = new Vehicle; //.. see step nr.3 $this->render('create',array( 'Person'=>$Person, 'Vehicle'=>$Vehicle) ); }
//..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
поместите некоторые ярлыки и дизайн на ваш взгляд;)
on $_POST
действии 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 }
Вы можете найти несколько примеров в этих двух вики-статьях Yii:
Yii 1.1: Как использовать единую форму для сбора данных для двух или более моделей?
Yii 1.1: Как использовать единую форму для сбора данных для двух или более моделей (CActiveForm и Ajax Validation edition) .
Вам не нужна мультимодель. Для правильного использования шаблона MVC требуется модель, которая отражает ваш пользовательский интерфейс.
Чтобы решить эту проблему, вам придется использовать CFormModel вместо ActiveRecord для передачи данных из View в Controller. Затем внутри вашего контроллера вы проанализируете модель, модель CFormModel, и используйте классы ActiveRecord (более одного) для сохранения в базе данных.
В обзорах форм и в главах модели в Yii Definitive Guide содержатся некоторые детали и примеры.
Другие предложения –
Также мы можем использовать Wizard Behavior , это расширение, которое упрощает обработку многоэтапных форм. В которых мы можем использовать многомодельные формы для процесса процесса регистрации или другие.