1. 程式人生 > >yii2 GridView 下拉搜尋實現案例[轉載]

yii2 GridView 下拉搜尋實現案例[轉載]

原文連結:

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自定新增該欄位的搜尋條件即可