2017-08-01 75 views
1

我想在yii2中更改gridview的過濾器。我想使用下拉列表和複選框來添加過濾器而不是過濾器文本框。如何使用activeDropDownList yii2更改網格視圖過濾器?

1)undefine筆記本電腦模型錯誤 2)在我的代碼下拉列表中工作,但顯示沒有文本的空列表(我想我錯了一些事情)。幫我解決它。

這裏是我的代碼

<?= GridView::widget([ 
 
     'dataProvider' => $dataProvider, 
 
     'filterModel' => $searchModel, 
 
     'columns' => [ 
 
      ['class' => 'yii\grid\SerialColumn'], 
 

 
      //'id', 
 
\t \t \t [ 
 
\t \t \t 
 
\t \t \t 
 
       'attribute'=>'id', 
 
\t \t \t \t 'value'=>'id', 
 
       //'filter'=>array("1"=>"open","2"=>"in progress","3"=>"closed") 
 
\t \t \t \t 'filter' => Html::activeDropDownList($searchModel, 'id', ArrayHelper::map(Laptop::find()->asArray()->all(), 'id', 'laptop'),['class'=>'form-control','prompt' => 'Select Category']), 
 
\t \t \t ], 
 
      'network', 
 
      'technology', 
 
      'sup_id', 
 
      'speaker', 
 
\t \t \t 'size', 
 
\t \t \t [ 
 
      'class' => 'yii\grid\ActionColumn', 
 
\t 
 
      'template' => '{myButton}' , // the default buttons + your custom button 
 
      'buttons' => [ 
 
       'myButton' => function($url, $model, $key) {  // render your custom button 
 
        return Html::a('تایید'); 
 
       } 
 
      ] 
 
\t \t \t ], 
 
\t \t \t 
 
\t \t \t // [ 
 
      // 'class' => DataColumn::className(), // this line is optional 
 
      /* 'attribute' => 'name', 
 
      'format' => 'text', 
 
      'label' => 'Name', 
 
     ],*/ 
 
      // 'optical_drive', 
 
      //'webcam', 
 
      // 'touchpad', 
 
      // 'card_reader', 
 
      // 'ethernet', 
 
      // 'vga', 
 
      // 'hdmi', 
 
      // 'usb3_ports', 
 
      // 'usb2_ports', 
 
      // 'usb_type_c', 
 
      // 'thunderbolt_ports', 
 
      // 'serial_ports', 
 

 
      ['class' => 'yii\grid\ActionColumn'], 
 
     ], 
 
\t \t 
 
\t \t \t \t 'layout' => '{summary}{items}{pager}', 
 
\t \t 
 
\t \t 
 
\t \t 
 
    ]); ?>

在下面的部分我應該怎麼改變來解決這個問題?

<? 
 

 
\t [ 
 
\t \t \t 
 
\t \t \t 
 
       'attribute'=>'id', 
 
\t \t \t \t 'value'=>'id', 
 
       //'filter'=>array("1"=>"open","2"=>"in progress","3"=>"closed") 
 
\t \t \t \t 'filter' => Html::activeDropDownList($searchModel, 'id', ArrayHelper::map(Laptop::find()->asArray()->all(), 'id', 'laptop'),['class'=>'form-control','prompt' => 'Select Category']), 
 
\t \t \t ], 
 

 
?>

謝謝:))

回答

1

嘗試添加realted使用條款在你看來

例如,如果你有共同的\車型中的所有車型

use common\models\LapTop; 

use your_app_name\models\LapTop; 

分配適當的值your_app_name

或基本模板嘗試

use app\models\LapTop; 

和過濾嘗試使用僅

'filter'=>ArrayHelper::map(LapTop::find()->asArray()->all(), 'id', 'laptop'), 
+0

類‘警予\型號\筆記本電腦’未找到 – areff

+0

你確定你有命名空間中的一個名爲筆記本電腦類已分配??????? – scaisEdge

+0

與應用遇到同樣的錯誤的名稱 – areff

1

如果使用PhpStorm可以刪除此代碼「Laptop :: find()」 輸入此地點單詞後「Lapto p「 - PhpStorm增加了下拉菜單 - 從這個下拉菜單中你應該選擇」你的Laptopclass的位置「,

之後 - 在代碼中你的單詞」Laptop「將被類似的東西取代 - 」common \ models \ LapTop ::找到()」

例子:https://i.ytimg.com/vi/EVvBKDB1NNQ/maxresdefault.jpg

+0

如果您使用「筆記本電腦類」評論了代碼,那麼它在'使用'模型 – areff

+0

後顯示相同的錯誤 - 您是否得到相同的錯誤?你需要知道產生你的錯誤的行。 –

+0

謝謝dude.it解決在前答案..post更新:))) – areff