Yii2 Gridview中的分页和过滤

Sha*_*ika 6 pagination gridview filter yii2

我在Yii2中使用了CRUD生成器,它为我的actionIndex控制器生成了以下代码......

public function actionIndex()
{
    $searchModel = new LeadSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}
Run Code Online (Sandbox Code Playgroud)

我试图对这个默认代码做两件事:

1)设置页面大小,使显示它的gridview只显示10行

2)修改$searchModel它只返回表中状态列匹配某些多个值(IN运算符)的记录...或者更好的是,所有与给定值不匹配的记录.

对于#1,我看到很多例子在使用时设置'分页' ActiveDataProvider,但没有search().这段代码对我不起作用......

$dataProvider = $searchModel->search(
    Yii::$app->request->queryParams, ['pagination' => [ 'pageSize' => 10 ]]
);
Run Code Online (Sandbox Code Playgroud)

对于#2,我知道我们可以通过将新的LeadSearch对象声明为...来进行过滤.

$searchModel = new LeadSearch([ 'status' => 'open' ]);
Run Code Online (Sandbox Code Playgroud)

......但这样的事情不起作用......

$searchModel = new LeadSearch([ 'status' => ['open', 'pending'] ]);
Run Code Online (Sandbox Code Playgroud)

GAM*_*ITG 14

您需要在搜索模型中添加pagination选项,ActiveDataProvider并且还要置于whereandWhere处于$query条件状态.

$query = modalName::find()->andWhere([ 'status' => ['open', 'pending'] ]);

$dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [ 'pageSize' => 10 ],
        ]);
Run Code Online (Sandbox Code Playgroud)


小智 5

    $searchModel = new PersonSearch();
    $dataProvider = $searchModel->search(
    Yii::$app->request->queryParams);
    $dataProvider->pagination = ['pageSize' => 10,];
Run Code Online (Sandbox Code Playgroud)