Ответ 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
}