作者:白狼 出處:http://www.manks.top/article/yii2_gridview_dropdown_search本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 下拉搜索,我們先來看看預期的效果圖 具體怎麼 ...
作者:白狼 出處:http://www.manks.top/article/yii2_gridview_dropdown_search本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
下拉搜索,我們先來看看預期的效果圖
具體怎麼實現喃?考慮到一張數據表要下拉效果的欄位可能有很多個,我們先在其model中實現一個方法方便後續操作
/** * 下拉篩選 * @column string 欄位 * @value mix 欄位對應的值,不指定則返回欄位數組 * @return mix 返回某個值或者數組 */ public static function dropDown ($column, $value = null) { $dropDownList = [ 'is_delete'=> [ '0'=>'顯示', '1'=>'刪除', ], 'is_hot'=> [ '0'=>'否', '1'=>'是', ], //有新的欄位要實現下拉規則,可像上面這樣進行添加 // ...... ]; //根據具體值顯示對應的值 if ($value !== null) return array_key_exists($column, $dropDownList) ? $dropDownList[$column][$value] : false; //返回關聯數組,用戶下拉的filter實現 else return array_key_exists($column, $dropDownList) ? $dropDownList[$column] : false; }
然後我們上代碼看看具體怎麼實現的下拉搜索
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ // ...... [ 'attribute' => 'is_hot', 'value' => function ($model) { return Article::dropDown('is_hot', $model->is_hot); }, 'filter' => Article::dropDown('is_hot'), ], [ 'attribute' => 'is_delete', 'value' => function ($model) { return Article::dropDown('is_delete', $model->is_delete); }, 'filter' => Article::dropDown('is_delete'), ], // ...... ], ]); ?>
像這樣,我們就簡單地實現了兩個下拉效果,要實現篩選功能,在你的dataProvider自定添加該欄位的搜索條件即可