在yii2中的gridview pjax搜索中使用POST方法

时间:2015-10-19 05:25:08

标签: gridview yii2 yii2-advanced-app yii2-basic-app

我在yii2高级应用程序中有一个gridview,我想使用post方法搜索该网格的数据,这不是问题,我可以使用下面的代码

<?php Pjax::begin(['id' => 'grid', 'timeout' => false ,'clientOptions' => ['method' => 'POST'] ]); ?>

<?php Pjax::end(); ?>

但现在问题是如何使用该表的post模型中的Search来发送数据。

现在我所做的是检查$ _POST并将其分配给代码中的$params,但我想知道有没有比下面的代码更好的方法呢

public function search($params)
{
    if(isset ($_POST)){
        $params = $_POST;
    }

    $query = Event::find()-> where(['organiser_id'=>Yii::$app->user->identity->id]);

    $this->load($params);

    $query->joinWith(['interest']);

    if (!$this->validate()) {

        return $dataProvider;
    }

    $query->andFilterWhere([
        'id' => $this->id,
        'organiser_id' => $this->organiser_id,
        'is_active' => $this->is_active,
    ]);

    $query->andFilterWhere(['like', 'title', $this->title])

    return $dataProvider;
}

非常感谢

1 个答案:

答案 0 :(得分:1)

public function search($params)
{
    if(isset ($_POST['SearchModel'])){
        $this->load = \Yii::$app->request->post();
    }

   //searching code here
}
在您执行搜索的索引操作中的

使用As:

public function actionIndex()
    {
        $searchModel = new SearchModel(); //Your Search Model Class
        $post = Yii::$app->request->post();
        $dataProvider = $searchModel->search($post);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

在搜索模型类::

public function search($params)
    {


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

        $this->load($params);
}