Yii PHP Добавить разбивку на страницу на мой сайт

-4

Я хотел бы добавить разбивку на страницы на свой сайт, но я очень новичок в Yii и хотел бы посоветовать.

Это страница, на которой я хочу добавить разбивку на страницы: https://gocar2.com/newsproducts/center

Как вы можете видеть, у меня есть несколько ячеек для каждой автоматической новости, и теперь я разрешаю показывать только 18 новостей на странице. Я хотел бы добавить pagination здесь, чтобы я мог просматривать больше новостей.

И это то, что я пробовал:

newscontroller.php

<?php

use yii\data\Pagination;

class NewsproductsController extends Controller
{
public function actionCentermore()
{

$criteria = new CDbCriteria;
$criteria->addCondition("approvedStatus = '1'");
$criteria->order = 'createdDate DESC';
$product = Newsproducts::model()->findAll($criteria);

$Pagination = new Pagination([
'defaultPageSize' => 15,
'totalCount' => $product->count(),
]);

$products = $product->offset($Pagination->offset)
->limit($Pagination->limit)
->all();

$this->renderPartial('centermore',compact('products', 'Pagination'));

}
}

newsview.php отобразит все верхнее меню и баннеры, и он отобразит centermore.php

$this->renderPartial('centermore', compact('products', 'Pagination'));

centermore.php (просмотр ячеек новостей), затем я добавил виджет LinkPager внизу.

LinkPager::widget(['Pagination' => $Pagination])

И, конечно, есть ошибка, Class LinkPager не может быть найден. Может ли кто-нибудь дать мне несколько советов, как решить эту проблему?

спросил(а) 2021-01-25T15:41:38+03:00 4 месяца, 4 недели назад
1
Решение
98

В Yii2 разбиение на страницы обычно обрабатывается через DataProvider, посмотрите на:
Руководство Yii2: поставщики данных, особенно ActiveDataProvider:

use yii\data\ActiveDataProvider;

$query = Post::find()->where(['status' => 1]);

$provider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 10,
],
'sort' => [
'defaultOrder' => [
'created_at' => SORT_DESC,
'title' => SORT_ASC,
]
],
]);

// returns an array of Post objects
$posts = $provider->getModels();

ответил(а) 2021-01-25T15:41:38+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема