Задать вопрос
@turkprogrammer

Реализация пагинации YII2, для вывода элементов массива картинок из заданной папки, как реализовать?

Всем здравствуйте, хочу реализовать вывод картинок с пагинацией с заданным количеством на страницу, хелпер пагинации не работает, пробовал конвертировать массив в обьект, тоже не работает,
public function actionIndex() {
       $dir = 'uploads';   
       $query = \yii\helpers\FileHelper::findFiles($dir,['only'=>['*.jpg','*.png']]); // получаю массив картинок
     // dd($query );
       //echo ArrayHelper::isIndexed($files); //проверяю тип массива
       //echo gettype($query ); //массив
       $pages = new Pagination([
            'totalCount' => $query->count(),    //        count() - не работает, если задать в ручную тоже Call to a member function offset() on array
            'pageSize' => Yii::$app->params['pageSize'],
            'forcePageParam' => false,
            'pageSizeParam' => false
        ]);
        $files = $query->offset($pages->offset) //Call to a member function offset() on array
            ->limit($pages->limit)
            ->asArray()
            ->all();
    
       return $this->render('index', compact('files','pages'));
      
    }


Как реализовать пагинацию для элементов массива, т.е картинок? Заранее спасибо если есть решение
  • Вопрос задан
  • 398 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
@turkprogrammer Автор вопроса
Вобщем я сам решил эту проблему с минимум кода, это использование Class yii\data\ArrayDataProvider

Controller:
public function actionIndex() {
        $dir = 'uploads';

        $query = \yii\helpers\FileHelper::findFiles($dir, ['only' => ['*.jpg', '*.png']]);
        $data = $query;

        $provider = new ArrayDataProvider([
            'allModels' => $data,
            'pagination' => [
                'pageSize' => 12,
            ],
                /* 'sort' => [
                  'attributes' => ['id', 'name'],
                  ], */
        ]);

// получает строки для текущей запрошенной странице
        $files = $provider->getModels();      
        return $this->render('index', compact('files','provider'));
    }

View:
echo yii\grid\GridView::widget([
                'dataProvider' => $provider,
            ]);


Это решение если есть необходимость выводить картинки или список файлов из каталога, может кому пригодится!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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