2016-02-15 52 views
13

Tutaj podoba mi wyjaśnić mój problem jasno,Jak wykonać filtr używając WYBIERZ rozwijanej w Yii2 GridView

próbuję wykonać WYBIERZ filtr rozwijanej przed tym multiselect filtra mam podstawowy filtr.

używam przedłużenie Kartik-v rozwijanej

search.php

<?php 
    $status = ArrayHelper::map(Status::find()->all(),'id','status'); 
    echo $form->field($model, 'status')->widget(Select2::classname(), [ 
          'data' => $status, 
          'language' => 'en', 
          'options' => [ 
          'placeholder' => 'Select Status..', 
          'multiple' => true 
          ], 
          'pluginOptions' => [ 
           'allowClear' => true 
          ], 
        ]); 
?> 

claimsSearch.php

$query->andFilterWhere([ 
      'status' => $this->status 
     ]); 

jeśli próbuję powyższy kod otrzymuję błąd jak poniżej

Array to string conversion 

ale tutaj nie wiem, jak napisać kod filtra.

aktualizacja searchview: search view snapshot

+0

Gdzie $ this-> Stan pochodzi? – aalgogiver

+0

zobacz powyżej w search.php – Nodemon

Odpowiedz

0

Nie wzywają model w tym widgecie. Możesz użyć tego w następujący sposób:

echo $form->field($mySearchModel, 'state_10')->widget(Select2::classname(), [ 
    'data' => $status, 
    'options' => [ 
     'placeholder' => 'Select Status ...', 
     'multiple' => true 
    ], 
]); 

Twój wybór prawdopodobnie zwróci tablicę. Tak, wyszukiwanie będzie coś takiego:

$query->andFilterWhere([ 
    'status' => ('in', 'status', $this->status) 
]); 

Zobacz więcej przykładów zapytań here.

Jeśli to rozwiązanie nie działa, zasugeruję wykonanie widoku w widoku var_dump($yourModel->status), aby sprawdzić, co powraca.

+0

otrzymuję błąd i jednocześnie nie wyświetlają się żadne dane w widoku siatki (na stronie indeksu) – Nodemon

+0

Ale jaki błąd? – Clyff

+0

Brak danych w Gridview – Nodemon

0

$ this-> status to tablica?

Tak, można użyć

<?php 
$status = ArrayHelper::map(Status::::model()->findAllByAttributes(array("id"=>$status));(),'id','status'); 
echo $form->field($model, 'status')->widget(Select2::classname(), [ 
          'data' => $status, 
          'language' => 'en', 
          'options' => [ 
          'placeholder' => 'Select Status..', 
          'multiple' => true 
          ], 
          'pluginOptions' => [ 
           'allowClear' => true 
          ], 
        ]); 
?> 
+0

proszę sprawdzić swoją odpowiedź, dużo błędów w tym – Nodemon