2015-06-28 15 views
7

Zwracam wartość cat_id przez GET w url, aby powiedzieć, że moja lista rozwijana, która pozycja musi być wybrana. Ale to nie działa.Yii2 dropdownList wybierz opcję domyślną

<?= $form->field($model, 'cat_id')->dropDownList(
ArrayHelper::map(DeviceCats::find() 
->where(['is_deleted' => 'no'])->all(),'id','title') 
,['options' => [$_GET['cat_id'] => ['selected'=>true]] 
, 'prompt' => ' -- Select Category --']) ?> 
+0

odnoszą http://www.saidur-rahman.com/default-selected- value-in-a-dropdownlist-in-yii/ –

Odpowiedz

11

W końcu rozwiązany z niewiarygodną zmianą. Po prostu zmieniono pierwszą literę wybranego na kapitał ("wybrany" powinien być "Wybrany"). Oto kod:

<?= $form->field($model, 'cat_id')->dropDownList(
ArrayHelper::map(DeviceCats::find() 
->where(['is_deleted' => 'no'])->all(),'id','title') 
,['options' => [$_GET['cat_id'] => ['Selected'=>'selected']] 
, 'prompt' => ' -- Select Category --']) ?> 
0

Wystarczy się upewnić, że model ma ustawiony zestaw cat_id. Gdzieś w kontrolerze tylko zrobić

$model->cat_id = filter_input_array(INPUT_GET, 'cat_id'); 

lub

$modelArray = filter_input_array(INPUT_GET, 'nameofmodel'); 
    $model->cat_id = $modelArray['cat_id']; 

Jeśli naprawdę chcesz to zrobić jak ty, prawdopodobnie trzeba użyć nazwy modelu zbyt tam.

<?= $form->field($model, 'cat_id')->dropDownList(ArrayHelper::map(DeviceCats::find()->where(['is_deleted' => 'no'])->all(),'id','title'),['options' => [$_GET['SOMETHIGNHERE']['cat_id'] => ['selected'=>true]], 'prompt' => ' -- Select Category --']) ?> 
+0

Dziękuję Mihai. Właściwie jestem pewien, że istnieje wartość w tablicy. Również użyłem var_dump ($ _ GET) i jest na poziomie 1. – Mojtaba

+0

to jest mój punkt ... nie powinno być. Przeskakujecie przez obręcze, żeby to działało i robili to źle. Zamiast tego powinieneś przenieść kod w kontrolerze. Poza tym używasz globalsów PHP bezpośrednio i to nie jest nie. –

10

'Selected' muszą być pisane z dużej litery 'S':

'options'=>['72'=>['Selected'=>true]] 
+1

Dlaczego wybrane piekło musi być napisane dużymi literami S? To musi być błąd lub coś. W każdym razie, dzięki! –

Powiązane problemy