Question

Je commence à apprendre à utiliser yu et déjà réussi à faire quelques trucs de base.

Disons que j'ai deux tables simples: « utilisateurs » et « projets » où la relation est de 1 à plusieurs (un utilisateur peut avoir plusieurs projets)

J'ai CRUD généré à l'aide GII, mais dans le « créer / modifier la page d'utilisateur » cela ne fournit pas la liste déroulante, mais seulement un champ de texte où je dois entrer l'ID utilisateur.

Lors de l'édition d'un projet, je voudrais avoir une liste déroulante où je peux sélectionner un utilisateur (si l'élément doit afficher une liste de noms d'utilisateurs).

Je suppose que GII ne peut pas générer le code du contrôleur et vue pour cette

Quelle serait la meilleure pratique pour ce faire?

Je l'ai déjà déclaré que les relations comme indiqué dans http: // www .yiiframework.com / doc / Guide / 1.1 / fr / database.arr

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

et

public function relations()
{
    return array(
        'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
    );
}
Était-ce utile?

La solution

Trouvez le code échantillon pour générer la liste des utilisateurs

<?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;')
                ); ?>

Autres conseils

Payer ces extension gii pour générer CRUDs longue:

Les deux sont en mesure de rendre des formes avec des entrées de relation. GTC utilise un widget relation pour ces entrées qui peuvent être personnalisés.

Ne pas oublier de uncomment

$ this-> performAjaxValidation (modèle $)

sur le contrôleur ou vous avez des éléments créés au lieu d'un!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top