你能帮我解决在Yii2中为GridView实现过滤器的问题吗?现在,我的渲染表没有响应我的动作(搜索GET参数没有添加,如果我输入查询到过滤器输入,则没有任何变化)。这是我的代码: 控制器:
$searchModel = new UserSearch();
$dataprovider = $searchModel->search(\Yii::$app->request->get());
return $this->render('index', [
'dataProvider' => $dataprovider,
'searchModel' => $searchModel
]);
模型(UserSearch.php):
public $fullname;
public function rules()
{
return [
[['fullname'], 'safe'],
];
}
public function search($params) {
$query = StUsers::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if(!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere(['LIKE', 'fullname', $this->fullname]);
return $dataProvider;
}
查看:
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'fullname'
],
]);
答案 0 :(得分:0)
在DataView中进行过滤时遇到同样的问题。也许问题出在客户端。 再次检查您的jquery是否在您的页面上调用了两次(浏览器/源代码)。 也可能是你的问题: jQuery(...).yiiGridView is not a function
答案 1 :(得分:0)
4 年过去了,应该不需要解决方案了。但是,问题出在下一个语句中:
if(!($this->load($params) && $this->validate())) {
return $dataProvider;
}
改为:
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}