Come avere Yii generare elenco a discesa da utenti conosciuti?
-
26-10-2019 - |
Domanda
Sto solo cominciando imparare ad usare Yii , e già riuscito a fare alcune cose di base.
Diciamo che ho due semplici tabelle: "utenti" e "progetti", dove il rapporto è di 1 a molti (un utente può avere molti progetti)
Ho generato CRUD usando GII, ma nella "pagina utente creare / modificare" questo non fornisce la discesa, ma solo un campo di testo in cui ho bisogno di inserire l'ID utente.
Quando si modifica un progetto, mi piacerebbe avere un elenco a discesa dove posso selezionare un utente (così l'elemento dovrebbe visualizzare un elenco di nomi utente).
Presumo GII non è in grado di generare il codice di controllo e visualizzazione per questo
Quale sarebbe la migliore pratica per fare questo?
Ho già dichiarato i rapporti come indicato nel http: // www .yiiframework.com / doc / guide / 1.1 / it / database.arr
public function relations()
{
return array(
'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
);
}
e
public function relations()
{
return array(
'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
);
}
Soluzione
Trova il codice di esempio per generare l'elenco degli utenti
<?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;')
); ?>
Altri suggerimenti
Checkout questi estensione gii per la generazione di CRUDs estese:
- Gii Collection Template (FullModel, FullCRUD)
- Giix
Entrambi sono in grado di rendere moduli con ingressi rapporto. GTC utilizza un widget relazione per questi ingressi che possono essere personalizzati.
Non dimenticare di togliere il commento
$ this-> performAjaxValidation ($ modello)
sul controller o dovrete elementi creati al posto di uno!