Laravel 5.5 изменяет нумерацию страниц для элемента, который будет рассматриваться как 2 страницы - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь изменить способ отображения изображения при разбивке на страницы.Обычно изображения находятся в портретном режиме, и у меня perPage установлен на 2 (так что его 2 изображения на странице, чтобы он выглядел как книга), но есть и ландшафтные изображения, которые в итоге смешиваются с портретными.Все изображения имеют столбец ширины и высоты, чтобы определить, является ли его пейзаж или портрет.

Я хочу, чтобы можно было сказать пагинатору обрабатывать все элементы ландшафта, которые будут называться как 2 страницы, а не как одна страница.

это мой текущий код:

/**
 * The attributes on which the comic list can be ordered
 * @var array
 */
public static $allowedSortingOptions = [
    'sort_order desc'  => 'Sort Order (descending)',
    'random' => 'Random'
];

/**
 * Lists images for the front end
 *
 * @param        $query
 * @param  array $options Display options
 *
 * @return File
 */
public function scopeListFrontEnd($query, $options)
{
    /*
     * Default options
     */
    extract(array_merge([
        'page'       => 1,
        'perPage'    => 1,
        'sort'       => 'sort_order',
        'chapter'    => null,
        'language'   => 'en'
    ], $options)); 

    if($chapter) {
      $query->where('attachment_id', $chapter);
    }

    $query->where('language', $language);

    /*
     * Sorting
     */
    if (!is_array($sort)) {
        $sort = [$sort];
    }

    foreach ($sort as $_sort) {

        if (in_array($_sort, array_keys(self::$allowedSortingOptions))) {
            $parts = explode(' ', $_sort);
            if (count($parts) < 2) {
                array_push($parts, 'desc');
            }
            list($sortField, $sortDirection) = $parts;
            if ($sortField == 'random') {
                $sortField = Db::raw('RAND()');
            }
            $query->orderBy($sortField, $sortDirection);
        }
    }

    $images = $query->paginate($perPage, $page);

    return $images;
}

Редактировать Очиститель: Пейзажное изображение эквивалентно 2 страницам.Я хочу, чтобы можно было указывать paginator обрабатывать его как таковой, когда у меня $perPage установлено 2 элемента на страницу.Таким образом, он не будет отображать как ландшафтное изображение, так и портретное изображение, только ландшафт для этой страницы.

1 Ответ

0 голосов
/ 19 мая 2018
if($chapter) {
  $query->where('attachment_id', $chapter);
}

$query->where('language', $language);

$limit = 20;
$query->pagination($limit);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...