2

我在 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;
}

非常感谢

4

1 回答 1

2
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);
}
于 2015-10-19T06:02:22.647 回答