Yii2 GridView分页+;搜索过滤器
尝试在gridview中同时启用分页和搜索筛选器。我知道我在下面的代码中覆盖了dataProvider,但我不确定如何才能做到这一点。当然,问题是当前如果我更改页面或进行筛选搜索,分页就会消失Yii2 GridView分页+;搜索过滤器,yii2,Yii2,尝试在gridview中同时启用分页和搜索筛选器。我知道我在下面的代码中覆盖了dataProvider,但我不确定如何才能做到这一点。当然,问题是当前如果我更改页面或进行筛选搜索,分页就会消失 public function actionLibrary() { $query = FileEntry::find(); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pa
public function actionLibrary()
{
$query = FileEntry::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 10,
],
]);
$searchModel = new FileEntrySearch();
if(Yii::$app->request->isAjax)
{
$dataProvider = $searchModel->search(Yii::$app->request->get());
}
return $this->render('library', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
$dataProvider=$searchModel->search(Yii::$app->request->queryParams)代码>
这假设您的$searchModel
已经是ActiveDataProvider的实例,我假设您在FileEntrySearch模型中定义了ActiveDataProvider。因此,您的操作可能如下所示:
公共函数actionLibrary()
{
$searchModel=newfileentrysearch();
$dataProvider=$searchModel->search(Yii::$app->request->queryParams);
返回$this->render('library'[
“dataProvider”=>$dataProvider,
“searchModel”=>$searchModel,
]);
}
以及您的FileEntrySearch:
类FileEntrySearch扩展FileEntry
{
//[…]规则、场景等。
公共函数搜索($params)
{
$query=FileEntry::find();
$dataProvider=新的ActiveDataProvider([
'query'=>$query
]);
//您可以在这里添加排序
$this->load($params);
//您可以在此处定义过滤器
return$dataProvider;//这将成为您的$searchModel
}
}
没有数据提供程序以这种方式重写。$dataProvider=$searchModel->search(Yii::$app->request->queryParams)代码>
这假设您的$searchModel
已经是ActiveDataProvider的实例,我假设您在FileEntrySearch模型中定义了ActiveDataProvider。因此,您的操作可能如下所示:
公共函数actionLibrary()
{
$searchModel=newfileentrysearch();
$dataProvider=$searchModel->search(Yii::$app->request->queryParams);
返回$this->render('library'[
“dataProvider”=>$dataProvider,
“searchModel”=>$searchModel,
]);
}
以及您的FileEntrySearch:
类FileEntrySearch扩展FileEntry
{
//[…]规则、场景等。
公共函数搜索($params)
{
$query=FileEntry::find();
$dataProvider=新的ActiveDataProvider([
'query'=>$query
]);
//您可以在这里添加排序
$this->load($params);
//您可以在此处定义过滤器
return$dataProvider;//这将成为您的$searchModel
}
}
没有数据提供程序以这种方式重写。您可以在创建数据提供程序后更改分页配置:
public function actionLibrary() {
$searchModel = new FileEntrySearch();
$dataProvider = $searchModel->search(Yii::$app->request->get());
$dataProvider->pagination->pageSize = 10;
return $this->render('library', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
创建数据提供程序后,可以更改分页配置:
public function actionLibrary() {
$searchModel = new FileEntrySearch();
$dataProvider = $searchModel->search(Yii::$app->request->get());
$dataProvider->pagination->pageSize = 10;
return $this->render('library', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
只需在FileEntrySearch
模型的search()
方法中添加pagination
参数,为什么要初始化dataProvider
如果要重写它,请在FileEntrySearch()中添加dataProvider
初始化
model。只需在FileEntrySearch
模型的search()
方法中添加pagination
参数,为什么要初始化dataProvider
如果要重写itI,请在FileEntrySearch()
模型中添加dataProvider
初始化。