2016-08-16 2 views
1

J'ai une page de formulaire que l'un des champs est nommé type et il est enum('lost', 'found') et dans ce formulaire, je veux que ce champ soit une liste déroulante que seulement a ces deux options lost et found.
l'une des options proposées utilisait ce à vueYii2 - Faire une liste déroulante de la structure db pas les données insérées dans db

<?= $form->field($model, 'type')->dropDownList(
      $items, 
      ['prompt'=>''] 

et ce dans le contrôleur

$items = ArrayHelper::map(Ads::find()->all(), 'id', 'type'); 

mais comme vous le savez est juste en utilisant les données insérées dans la db et si Je clique sur la liste déroulante, il va charger toutes les options perdues et trouvées qui sont dans la base de données.
Y a-t-il un moyen de dire à yii d'utiliser la structure et les règles db au lieu des données?

Je dois préciser que dans le modèle, je n'ai trouvé aucune règle indiquant la partie enum, est-ce que c'est correct? Pourquoi est-ce comme ça?
J'ai utilisé Gii pour les créer.

public function rules() 
{ 
    return [ 
     [['type', 'explanation', 'image', 'cost', 'province_id', 'address'], 'required'], 
     [['type', 'explanation', 'image', 'address'], 'string'], 
     [['cost'], 'integer'], 
     [['province_id'], 'string', 'max' => 20], 
     [['province_id'], 'exist', 'skipOnError' => true, 'targetClass' => Province::className(), 'targetAttribute' => ['province_id' => 'name']], 
    ]; 
} 

Répondre

1

Lorsqu'un type est déposé ENUM et générer crud de GII, yu générer ce genre de menu déroulant dans votre formulaire automatiquement.

<?= $form->field($model, 'type')->dropDownList([ 'lost' => 'Lost', 'found' => 'Found', ], ['prompt' => '']) ?> 

Dans le modèle de son type est une chaîne:

public function rules() 
    { 
     return [ 
       [['type'], 'string'], 
+1

ce n'est pas ce que GII a créé, c'est ce que je l'ai fait pour cela. Gii créé de la manière habituelle. Comme ceci: ' field ($ model, 'type')?>' – Amir

+0

Êtes-vous sûr que le champ 'type' est enum datatype? –

+1

ouais, mais comme je l'ai dit je ne comprends pas pourquoi dans le modèle il n'y a rien qui soit lié à la partie enum. J'ai posté les règles dans le modèle. – Amir