2

私は yii2 の高度なアプリにグリッドビューを持っており、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
}

Search が実装されている Index Action では、次のように使用します。

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 に答える