php - ListView 中 Yii 2 分页的问题
问题描述
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);
?>
也许渲染不正确?
解决方案
The problem is coming from the pajax.
PJAX has timeout option. If PJAX not obtain AJAX response during this timeout, it will perform full page reload.
Check the answers in this question, its the same problem, maybe you will find the light:
How to refresh pjax listview in yii2? It reloads the entire page
推荐阅读
- winapi - 使用绝对路径加载 Kernel32.dll 是否更安全?
- java - 在 java 8 中使用流、lambda
- go - 有没有办法将 Go 可执行文件分成几个文件?
- stackexchange-api - 如何通过stackoverflow api的标签获取未回答问题的数量?
- kentico - 如何在表单数据中保存下拉文本
- javascript - 如何将 URL 链接添加到警报?
- python - 如何将 defaultdict(list) 转换为 Pandas DataFrame
- php - PHP MySQL InnoDB 使用事务多次插入不同的表失败
- javascript - 如何使用ajax javascript php将大型json数据(250kb)发送到mysql数据库
- c# - .net core DI,使用一个依赖项中的值来注册另一个依赖项