[英]yii2:Custom Pagination for Gridview in form view
我在_form.php
文件中包含了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中同時使用過濾器和分頁。
任何解決方案將不勝感激。
謝謝
我對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->search()
傳遞給網格
如果過濾器仍然不起作用,您可以從模型中提供代碼。
我在控制器中這樣做:
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,
]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.