Pregunta

Estoy empezando a aprender a usar yii, y ya logró hacer algunas cosas básicas.

Digamos que tengo dos tablas simples: "usuarios" y "proyectos" donde la relación es de 1 a muchos (un usuario puede tener muchos proyectos)

He generado CRUD usando GII, pero en la página "Crear/editar usuario" esto no proporciona el menú desplegable sino solo un campo de texto donde necesito ingresar la ID de usuario.

Al editar un proyecto, me gustaría tener una lista desplegable donde pueda seleccionar un usuario (por lo que el elemento debe mostrar una lista de nombres de usuario).

Supongo que GII no puede generar el controlador y ver código para esto

¿Cuál sería la mejor práctica para hacer esto?

Ya he declarado las relaciones como se indica en http://www.yiiframework.com/doc/guide/1.1/en/database.arr

public function relations()
{
   return array(
        'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
    );
}

y

public function relations()
{
    return array(
        'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
    );
}
¿Fue útil?

Solución

Encuentre el código de muestra para generar la lista de usuarios

<?php
    $form = $this->beginWidget('CActiveForm', array(
                'id' => 'project-form',
                'enableAjaxValidation' => true,
            ));

?>

<?php echo $form->dropDownList($model, 'user_id',
                CHtml::listData(Projects::model()->with('projects_rel')->findAll(), 'id', 'username'),
                array('style'=>'width:150px;')
                ); ?>

Otros consejos

Consulte esta extensión GII para generar cruds extendidos:

Ambos pueden representar formas con entradas de relación. GTC utiliza un widget de relación para estas entradas que se pueden personalizar.

No te olvides de desenchufar

$ this-> performeajaxvalidation (modelo $)

¡En el controlador o tendrás que artículos creados en lugar de uno!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top