如何进行分页?我有一个搜索表单和一个在日期范围内传递的搜索按钮。第一页工作成功,但是当我点击第二页时,它会显示所有内容。如何将日期范围传递到我的分页中?
修改 以下是我的ReportSearch.php(模型)
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 5,
//'params' => array('search' => 'true', 'from_dt'=>$stockmovement_summary_from_sales_date, 'to_dt'=> $stockmovement_summary_to_sales_date),
],
]);
$dataProvider->setSort([
'defaultOrder' => [
'd_item.desc_e_tx' => SORT_ASC,
],
'attributes' => [
'd_item.desc_e_tx'
]
]);
return $dataProvider;
}
以下是我的控制器:
$searchModel = new ReportSearch();
$dataProvider = $searchModel->searchStockMovementSummary($stockmovement_summary_from_sales_date, $stockmovement_summary_to_sales_date);
return $this->render('stockmovementreportsummary', [
'search' => 'true',
'dataProvider' => $dataProvider,
'from_dt' => $stockmovement_summary_from_sales_date,
'to_dt' => $stockmovement_summary_to_sales_date,
'model' => $searchModel,
]);
下面是我的index.php
$reports = $dataProvider->getModels();
$i=1;
echo "<table class='table table-striped table-bordered'>";
echo "<tr><th>#</th><th>Item</th><th>Total Summary Usage Qty</th><th>Current Stock On Hand</th><th>Measurement</th></tr>";
foreach ($reports as $report) {
$item_key = $report['report_item_key'];
$item_model = Item::find()->where(['item_key' =>$item_key])->one();
$item_e_desc_tx = $item_model->desc_e_tx;
$item_c_desc_tx = $item_model->desc_c_tx;
$item_qty_no = $item_model->qty_no;
$item_measurement_tx = $item_model->measurement;
echo "<tr>";
echo "<td>" . $i++ . "</td>";
echo "<td>" . Html::a($item_key, array('stockmovementreportdetailbyitem', 'item_key' => $item_key, 'search' => 'true', 'from_dt' => $from_dt, 'to_dt'=>$to_dt)) . "<br>" . $item_e_desc_tx . "<br>" . $item_c_desc_tx ."</td>";
echo "<td>" . $report['total_summary_usage_qty'] . "</td>";
echo "<td>" . $item_qty_no . "</td>";
echo "<td>" . $item_measurement_tx . "</td>";
echo "</tr>";
}
echo "</table>";
echo \yii\widgets\LinkPager::widget([
'pagination'=>$dataProvider->pagination,
]);
答案 0 :(得分:0)
应该使用GridView,但我认为它不会有所帮助。您是否有机会使用POST而不是GET来过滤结果?如果您在createUrl函数中查看https://github.com/yiisoft/yii2/blob/master/framework/data/Pagination.php#L257,您将看到它使用getQueryParams http://www.yiiframework.com/doc-2.0/yii-web-request.html#getQueryParams()来创建查询字符串。如果你使用POST,那么这个函数将不会正确地获取params,因此下一页的分页将失败。
好的,因为你实际上使用的是POST,所以你必须创建自己的分页功能,并将其考虑在内。或者只是使用GET。您没有对DB执行任何操作,您可以安全地使用GET。这对每个人都有好处。
答案 1 :(得分:0)
您必须编辑动作中的代码。 阅读this documentation。
并修改$dataProvider->pagination