2015-09-11 6 views
7

In Yii2, mit Html::activeDropDownList ich Daten in einer Form wie folgt einreichen:Yii2 Html :: Dropdownlist und Html :: activeDropDownList trade-off

<?= Html::activeDropDownList($model, 'category', ArrayHelper::map($categories, 'id', 'name'), [ 
     'multiple' => 'multiple', 
     'class' => 'multiselect', 
]) ?> 

Gibt es eine Möglichkeit vorgewählten Kategorien angeben in obigem? Ich weiß, es kann mit Html::dropDownLost wie folgt erfolgen:

<?= Html::dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name'), [ 
    'multiple' => 'multiple', 
    'class' => 'multiselect', 
]) ?> 

Aber es ist ein Trade-off! Es gibt keinen Ort, an dem angegeben werden könnte, dass es sich um Daten handelt, die an ein bestimmtes Modell angehängt werden, wie es unter Verwendung von Html::activeDropDownList der Fall war.

Einer der Lösung war ich gefunden ActiveForm wie zu verwenden, die folgenden:

<?= $form->field($model, 'category') 
     ->dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name') 
]) ?> 

Das Problem, das ich mit dieser letzten Option ist, dass ich nicht in der Lage bin, die HTML-Optionen wie ‚multiple‘ angeben und CSS wie "Klasse".

Gibt es Hilfe bei der Verwendung der Dropdown-Liste mit der Möglichkeit anzugeben, dass die Liste Multiselect und vorgewählte Werte haben? Auch wenn jemand mich zu einer Ressource leitete, wo ich über wann und wo activeDropDownList oder dropDownList wählen kann, würde ich das wirklich schätzen.

Danke!

Antwort

5

@scaisEdge ‚s Antwort richtig ist, aber es ist eine andere Option, die Sie versuchen können:

<?php 
$model->category = [1,3,5]; //pre-selected values list 
echo $form->field($model, 'category') 
    ->dropDownList(ArrayHelper::map($categories, 'id', 'name'), 
     [ 
      'multiple' => 'multiple', 
      'class' => 'YOUR_CLASS' 
     ] 
) ?> 

Diese Code ist auch gültig und getestet. Happy Coding :)

+0

Das ist sauber und was ich wollte .. danke @ankitraturi – intumwa

+0

können Sie die Antwort akzeptieren – ankitr

6

Ich glaube, Sie können mit $ Optionen ausprobieren und tag attribute wie vorgeschlagen in doc

<?= Html::dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name'), [ 
    'multiple' => 'multiple', 
    'options' => [ 
     'value1' => ['disabled' => true, 'class' => 'yourClass', 'style'=> 'yourStyle', .... ], 
     'value2' => ['label' => 'value 2'], 
    ]; 
]) ?> 
+0

Das obige Snippet macht, was ich wollte, abgesehen von einer Sache: Es hängt keine Daten an mein Modell an. @ ankitraturis Antwort ist die richtige! Danke für deine Zeit! – intumwa