Yii2 search 搜尋[資料小部件--GridView--資料過濾]

大飛_dafei發表於2018-11-05

Yii2 搜尋條件,使用gii建立搜尋模型

<?php

namespace app\models;

use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;

class PostSearch extends Post
{
    public function rules()
    {
        // 只有在 rules() 函式中宣告的欄位才可以搜尋
        return [
            [['id'], 'integer'],
            [['title', 'creation_date'], 'safe'],
        ];
    }

    public function scenarios()
    {
        // 旁路在父類中實現的 scenarios() 函式
        return Model::scenarios();
    }

    public function search($params)
    {
        $query = Post::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        // 從引數的資料中載入過濾條件,並驗證
        //  var_dump($this->validate());  
        //  var_dump($this->getErrors()); 檢視搜尋條是否合法,獲取錯誤資訊
        if (!($this->load($params) && $this->validate())) {
            return $dataProvider;
        }

        // 增加過濾條件來調整查詢物件
        $query->andFilterWhere(['id' => $this->id]);
        $query->andFilterWhere(['like', 'title', $this->title])
              ->andFilterWhere(['like', 'creation_date', $this->creation_date]);

        return $dataProvider;
    }
}

官方: yii2 search 資料過濾

相關文章