我在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;
}
非常感谢
答案 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);
}