yii2 GridView 下拉搜尋實現案例[轉載]
阿新 • • 發佈:2018-12-11
原文連結:
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自定新增該欄位的搜尋條件即可