Comment avoir Yii générer la liste déroulante des utilisateurs connus?
-
26-10-2019 - |
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'),
);
}
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:
- Gii Collection Modèle (FullModel, FullCRUD)
- Giix
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!