widgets modulos guide formularios español consultas php templates yii yii-cmodel yii-chtml

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.



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/