【问题标题】:yii2:Custom Pagination for Gridview in form viewyii2:表单视图中Gridview的自定义分页
【发布时间】:2015-04-04 07:59:42
【问题描述】:

我已将 Gridview 小部件包含在 _form.php 文件中,它运行良好。问题在于过滤器和分页。

<?php
$dataProvider = new ActiveDataProvider([
    'query' => \app\models\ServiceCharges::find(),
    'pagination' => [
        'pageSize' => 5,
    ],
]);

 ?>
    <?php  
   $searchModel = New \app\models\ServiceChargesSearch(); 
   $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

   ?>

        </div>
</div>
<div>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

           'id',
           'service_name',                
           'room_category',
           'charges_cash',
           'charges_cashless',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

    </div> 

如果我将$dataprovider 分页部分放在$searchmodel 下方,分页工作正常,但过滤器不起作用,反之亦然。

如何在 _form.php 中同时使用过滤器和分页。

任何解决方案将不胜感激。

谢谢

【问题讨论】:

    标签: php gridview pagination yii2


    【解决方案1】:

    我在控制器中这样做:

    public function actionIndex()
    {
        $searchModel = new YourModels();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $dataProvider->pagination->pageSize = 10;
    
        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
    

    【讨论】:

      【解决方案2】:

      我没有使用 Yii2 的经验,但如果它与 1 类似的话..

      你为什么要声明dataProvider 两次?我想第一个是能够自定义页面大小。

      所以发生的情况是您使用一个数据提供程序来设置分页,但随后您将另一个数据提供程序传递给表格。

      其次,我不知道你的模型在里面看起来如何,但是..

      因为我可以看到search() 方法返回一个dataProvider,所以你应该改变里面的分页。

      或者我认为您可以在 search() 方法返回 dataProvider 之后立即更改它,例如:

      $searchModel = New \app\models\ServiceChargesSearch(); 
      $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
      $dataProvider->pagination->pageSize=5;
      

      因此您不需要之前声明的dataProvider 的第一个实例。

      至于过滤器,我不知道你的 ServiceChargesSearch::search 函数的行为如何

      但在 Yii1 中你通常:

      1) 定义模型 2) 用来自$_GET 的数据填充它 3) 通过 $model-&gt;search() 到网格

      如果过滤器仍然不起作用,您可以提供模型中的代码。

      【讨论】:

      • 我们可以在 gridview::widget 的视图页面上设置分页吗?
      猜你喜欢
      • 2017-09-03
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多