@Benderm

Можно ли в Yii2 использовать SqlDataProvider с LinkPager?

Здравствуйте!

Есть несколько вопросов, связанных с постраничной навигацией и выводом записей.

1. Можно ли в Yii2 использовать SqlDataProvider с LinkPager? Т.е. возможен ли вывод записей без ListView и GridView?

Такой вариант не работает. Постраничная навигация не выводится.
Контроллер:
$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM tbl_testimonials')->queryScalar();
    
$query = 'SELECT * FROM tbl_testimonials';

        $dataProvider = new SqlDataProvider([
            'sql' => $query,
            //'params' => [':status' => 3],
            'totalCount' => (int)$totalCount,
            'pagination' => [
                // количество пунктов на странице
                'pageSize' => 2,
            ]
        ]);


Представление:
<?php
    echo \yii\widgets\LinkPager::widget([
        'pagination' => $dataProvider->pagination,
        'nextPageLabel'=>'вперед →',
        'prevPageLabel'=>'← назад'
    ]); ?>


2. В yii1 можно было сделать, что-то типа:

$criteria=new CDbCriteria();
$result = Yii::app()->db->createCommand("SELECT COUNT(*) as cnt  FROM tbl_testimonials");
$count = $result->queryRow();
$pages=new CPagination($count['cnt']);
$pages->pageSize = 10;
$pages->applyLimit($criteria);

$command = Yii::app()->db->createCommand( "SELECT * FROM tbl_testimonials LIMIT :offset, :limit");
$command->bindValue(':offset', $pages->currentPage*$pages->pageSize);
$command->bindValue(':limit', $pages->pageSize);
$testimonials = $command->queryAll();


Дальше, в представлении, записи выводились, без каких либо виджетов. В CLinkPager передавались $pages.

Можно, ли в Yii2 сделать вывод записей подобным образом, без использования AR, ActiveDataProvider и SqlDataProvider?
  • Вопрос задан
  • 511 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
LinkPager это виджет вполне самостоятельный, можете его без проблем использовать без всего остального, но в него надо передать экземпляр yii\data\Pagination, который несет в себе инфо о текущей станице, кол-ве записей и т.д. При этом использовать yii\data\Pagination можно как в составе ActiveDataProvider, так и без него.
Почему у Вас не работает сложно сказать. Надо понимать, что конкретно не работает? Не выводится виджет или не работают ссылки или есть ошибка? Что у Вас в $dataProvider->pagination?
Кстати в документации есть отличный пример использования без DataProvider:
www.yiiframework.com/doc-2.0/yii-data-pagination.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы