【问题标题】:Problem with Yii 2 pagination in a ListViewListView 中 Yii 2 分页的问题
【发布时间】:2019-11-06 22:42:47
【问题描述】:

我遇到了 Yii 2 分页的问题。我的情况有点奇怪。我想要做的是一个 ListView,里面有一些 ChartJS。问题是当我点击页面按钮时,整个页面都会重新加载。 ListView 在手风琴组件内,也许这是我无法解决的问题。这是我的代码:

在站点控制器中:

    $usercenters = Yii::$app->mycomponent->getCenIds();
                            $query = new Query;
                            $query->select('distinct(center.id)')
                                ->from('campaign_center')
                                ->innerjoin('center', 'center.id = campaign_center.center_id')
                                ->where("campaign_center.campaign_id = " . $_POST['campaignid'])
                                ->andWhere("campaign_center.center_id in(" . $usercenters . ")");
                            $centers = $query->all();
                            $page = $_POST['page'];
                            $provider = new ArrayDataProvider([
                                'allModels' => $centers,
                                'pagination' => [
                                    'pageSize' => 3,
                                    'page' => $page,
                                    'totalCount' => $query->count()
                                ],
                                'sort' => [
                                    'attributes' => ['id'],
                                ],
                            ]);
                            return $this->renderAjax('_campaigntypeslevel_list', ['tipojerarquia' => $_POST['tipojerarquia'], 'origincampaigntype' => $_POST['origincampaigntype'], 'campaignid' => $_POST['campaignid'],'provider'=>$provider, 'centers'=>$centers,'usercenters'=>$usercenters]);

第一个视图(_campaigntypeslevel_list):

    Pjax::begin(['timeout' => 10000, 'clientOptions' => ['container' => 'pjax-container']]);
    echo ListView::widget([
         'id'=>'centerslistview',
         'dataProvider' => $provider,
         'layout' => '<div>{summary}</div><div>{pager}</div><div>{items}</div>',
         'itemView'     =>'_centers',
         'viewParams' => ['tipojerarquia' => $tipojerarquia, 
         'center' => $centermodel->id, 'campaign' => $campaignid, 
         'origincampaigntype' => $origincampaigntype, 'dataPie' => 
         $dataPie, 'dataBox' => $dataBox, '$dataPieLastYear' => 
         $dataPieLastYear, 'dataBoxLastYear'=>$dataBoxLastYear,'centers'=>$centers,'usercenters'=>$usercenters],
 ]);
    Pjax::end();

终于在 _centers 视图中:

    <?php
   use app\models\Campaign;
   use app\models\Center;

   $campaignmodel = Campaign::findOne($campaign);
   $dataPie = Yii::$app->chartfunctions->getHomeNPSData(Yii::$app->user->identity, NULL, $model['id'], NULL, $campaignmodel->id, NULL, NULL);
   $dataBox = Yii::$app->chartfunctions->getHomeNPSDataByMonth(Yii::$app->user->identity, NULL, $model['id'], NULL, $campaignmodel->id, NULL, NULL);
   $dataPieLastYear = Yii::$app->chartfunctions->getHomeNPSData(Yii::$app->user->identity, NULL, $model['id'], NULL, $campaignmodel->id, NULL, date('Y'));
   $dataBoxLastYear = Yii::$app->chartfunctions->getHomeNPSDataByMonth(Yii::$app->user->identity, NULL, $model['id'], NULL, $campaignmodel->id, NULL, date('Y'));
   echo \Yii::$app->controller->renderPartial('_boxcontent', ['tipojerarquia' => $tipojerarquia, 'center' => $model['id'], 'campaign' => $campaignmodel->id, 'origincampaigntype' => $origincampaigntype, 'dataPie' => $dataPie, 'dataBox' => $dataBox, '$dataPieLastYear' => $dataPieLastYear, 'dataBoxLastYear' => $dataBoxLastYear],false,true);

   ?>

也许渲染不正确?

【问题讨论】:

    标签: php pagination yii2


    【解决方案1】:

    问题来自于pajax。

    PJAX 有超时选项。如果 PJAX 在此期间未获得 AJAX 响应 超时,它将执行整页重新加载。

    检查这个问题的答案,同样的问题,也许你会找到光明:

    How to refresh pjax listview in yii2? It reloads the entire page

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多