我使用yii2基本应用程序并使用过滤器和搜索的gridview。 我希望每10条记录分页一次。我该怎么办?
我知道在dataprovider中添加分页但是如何将它添加到我的函数中?
请帮帮我。 这对我很重要。 我做了很多搜索,但无法找到解决方案
控制器:
public function actionIndex()
{
$searchModel = new ContactSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel'=>$searchModel,
'dataProvider' => $dataProvider,
]);
}
模型\ contactsearch.php
<?php
namespace app\models;
use app\models\Contact;
use yii\base\Model;
use yii\data\ActiveDataProvider;
class ContactSearch extends Contact {
public function rules() {
return [
[['f_name', 'l_name', 'phone_number', 'Mobile_number'], 'safe'],
];
}
public function scenarios() {
return Model::scenarios();
}
public function search($params) {
$query = Contact::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => [
'l_name' => SORT_DESC,
],
],
]);
if (!(($this->load($params) && $this->validate()))) {
return $dataProvider;
}
$query->andFilterWhere(['like', 'f_name', $this->f_name])
->andFilterWhere(['like', 'l_name', $this->l_name])
->andFilterWhere(['like', 'phone_number', $this->phone_number])
->andFilterWhere(['like', 'Mobile_number', $this->Mobile_number]);
//->andorderBy('id asc');
return $dataProvider;
}
}
?>
视图
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel'=>$searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'f_name',
'l_name',
'phone_number',
'Mobile_number',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
答案 0 :(得分:1)
在gridview中自定义记录金额
$dataProvider = new ActiveDataProvider([
'query' => $query,
//show 10 items per page
'pagination' => [
'pagesize' => 10,
],
'sort' => [
'defaultOrder' => [
'l_name' => SORT_DESC,
],
其他选择是: stackoverflow link
答案 1 :(得分:0)
在控制器中:
function actionIndex()
{
$query = Article::find()->where(['status' => 1]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
}
In view file:
foreach ($models as $model) {
// display $model here
}
// display pagination
echo LinkPager::widget([
'pagination' => $pages,
]);