Como Llamar Varios Modelos En Una Sola Vista

Buenas

Soy muy nuevo en yii y tengo un problema, esto lo que pasa…

las tablas que usare para la vista se relacionan de esta manera:

niño

niño->persona

niño->persona->telefonos

niño->padres

niño->padres->personas

(estas dos ultimas se hacen dos veces porque hay una para madre y otra para el padre)

lo que necesito no es solo llamar varios modelos en una sola vista de un formulario, sino usar el modelos persona no solo apra guardar la info del niño sino que tambien de los padres en la misma vista…

Saludos,

Si te fijas, las funciones de los controladores tienen un render, por ejemplo:


$this->render('update', array(

            'model' => $model,

        ));

Lo que tienes que hacer, es pasarle más parámetros en el array, por ejemplo, yo tengo lo siguiente


$this->render('create', array(

                'model' => $model,

                'capacitaciones' => $capacitaciones,

                'ferias' => $ferias,

                'usuario' => $usuario,

            ));

y eso puede ser lo que tu estimes conveniente, en mi caso, son querys, por ejemplo $usuario, es lo siguiente


$usuario = Usuario::model()->findByPk($uid);

Saludos

holaa como estas, si te entiendo bien lo que quieres es dentro del form ninio realizar el ingresod e datos del padre … yo lo soluciones de esta manera me guie en este video

espero te sirva …

Hola muchachos

la parte de las relaciones cercanas la entiendo

pero mi duda viene mas que todo a la hora de meter el modelo persona por segunda vez para meter los datos de padre, es decir:

el formulario manejara esta informacion por ejemplo:

escuela del niño (modelo Niño)

nombre niño (modelo Persona relacionada con Niño)

telefono del niño (modelo Telefono que se relaciona con Persona y este a su vez con Niño)

nombre del padre (modelo Persona que se relaciona con Padres y ese a su ve con Niño)

ocupacion del padre (modelo Padres relacionado con Niño)

En mi opinión deberías pasar a tu vista los modelos necesarios:

actionCreate (del modelo niño por ejemplo)




...

$modelEscuela = new Ninho;

$modelNinho = new Persona;

$modelPadre = new Persona;

$modelTelefono = new Telefono;

$modelPadres = new Padres;

...

$this->render('create',array(

                        'modelEscuela'=>$modelEscuela,

                           'modelNinho'=>$modelNinho,

                           'modelPadre'=>$modelPadre,

                           'modelTelefono '=>$modelTelefono ,

                           'modelPadres '=>$modelPadres ,

                                    ));



De esta forma ya puedes trabajar en tu form como quieres, y puedes salvar todos estos datos al mismo tiempo cuando hagas un submit.

Igual deberías revisar el diseño de la base de datos. Igual la tienes mal estructurada.

Un saludo.

PD: no había visto el mensaje de nkdos. +1 para él.

yo tambien lo intente hacer asi pero el problema es que la variable post solo especifica modelo[dato] y no variable(que contiene el modelo[dato] por lo que te da un error al intentar ver dar ese formato cuando repites los modelos…

Me han dicho de usar un modelo extendido de Cformmodel que recoja el la info de post y la redireccione a los modelos pertinentes, pero no se como manejarlo de esa manera

Cierto, acabo de comprobarlo.

Entonces para por ejemplo el padre, en lugar de:




echo $form->textField($model,'nombre', array('size'=>60)); 



Escribes:




echo CHtml::textField('nameTextField,'valueTextField', array('id'=>'idTextField')); 



Y de esta forma sí se enviarán mediante post los datos del padre.

Un saludo.