Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2 GridView分页+;搜索过滤器_Yii2 - Fatal编程技术网

Yii2 GridView分页+;搜索过滤器

Yii2 GridView分页+;搜索过滤器,yii2,Yii2,尝试在gridview中同时启用分页和搜索筛选器。我知道我在下面的代码中覆盖了dataProvider,但我不确定如何才能做到这一点。当然,问题是当前如果我更改页面或进行筛选搜索,分页就会消失 public function actionLibrary() { $query = FileEntry::find(); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pa

尝试在gridview中同时启用分页和搜索筛选器。我知道我在下面的代码中覆盖了dataProvider,但我不确定如何才能做到这一点。当然,问题是当前如果我更改页面或进行筛选搜索,分页就会消失

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
初始化。