salve a tutti, premetto che mi sono avvicinato da pochissimo a php e ai framework per questo linguaggio.
ho questa necessità.
vista la semplicità di creare il MVC partendo da una tabella di un db, ho ora necessità di caricare una lista(per esempio di città o di genere) facendo riferimento ad un model diverso da quello di riferimento del form.
per esempio, stò cercando di modificare il form di login, creato in automatico da yii al momento della creazione di una nuova webapp.
La risposta di Markux e’ ineccepibile, ma io mi chiedo, perche’ non usare un campo enum? Aumenta di molto la leggibilita’ del database e ti risparmia codice nelle view.
Puoi inoltre usare un metodo generico per generare enumDropDownList:
class ZHtml extends CHtml
public static function enum($model, $attribute)
{
$mod=$model;
$attr=$attribute;
self::resolveNameID($mod,$attr);
$enum=$model->tableSchema->columns[$attr]->dbType;
$off=strpos($enum,"(");
$enum=substr($enum, $off+1, strlen($enum)-$off-2);
$keys=str_replace("'",null,explode(",",$enum));
for($i=0;$i<sizeof($keys);$i++)
$values[$keys[$i]]=Yii::t('enumItem',$keys[$i]);
return $values;
}
public static function enumDropDownList($model,$attribute, $htmlOptions=null)
{
return CHtml::activeDropDownList($model,$attribute, ZHtml::enum($model, $attribute),$htmlOptions);
}
}
Nella view non serve richiamare niente, il campo enum e’ gestito come se fosse un campo di testo con scritto dentro ‘Maschio’ oppure ‘Femmina’, e’ questo il bello.
La chiamata al db non serve per il genere, per un altra ddl, per esempio la citta’ puoi usare: