php - modulos - formas de múltiples modelos en yii
yii2 guide español (4)
¿Cómo crear un formulario de varios modelos en Yii? Busqué toda la documentación de Yii, pero no obtuve resultados interesantes. ¿Puede alguien darme alguna dirección o pensamientos sobre eso? Cualquier ayuda será apreciable.
En mi experiencia obtuve esta solución para trabajar y rápidamente comprensible
Tienes dos modelos de datos que deseas recopilar. Digamos Person
y Vehicle
.
Paso 1: configurar el controlador para ingresar al formulario
En tu controlador, crea objetos modelo:
public function actionCreate() {
$Person = new Person;
$Vehicle = new Vehicle;
//.. see step nr.3
$this->render(''create'',array(
''Person''=>$Person,
''Vehicle''=>$Vehicle)
);
}
Paso 2: Escribe tu archivo de vista
//..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
poner algunas etiquetas y diseño en su vista;)
Paso 3: escriba el controlador on $_POST
acción on $_POST
y ahora regrese a su controlador y escriba la funcionalidad para la acción 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
}
No necesitas un multi-modelo. El uso correcto del patrón MVC requiere un modelo que refleje su UI.
Para resolverlo, deberá usar un CFormModel en lugar de un ActiveRecord para pasar los datos de View a Controller. Luego, dentro de su Controlador, analizará el modelo, el CFormModel uno, y usará las clases ActiveRecord (más de una) para guardarlas en la base de datos.
Resumen de formularios y capítulos del modelo de formulario en Yii Guía definitiva contiene algunos detalles y muestras.
Puedes encontrar algunos ejemplos en estos dos artículos de la wiki de Yii:
Otra sugerencia -
También podemos usar el comportamiento del asistente , es una extensión que simplifica el manejo de formularios de varios pasos. En el cual podemos usar formularios de modelos múltiples para el flujo del proceso de registro u otros.
Demostración - http://wizard-behavior.pbm-webdev.co.uk/