首页 > 解决方案 > Laravel 5.5 将项目的分页更改为 2 页

问题描述

我正在尝试更改图像在分页时的显示方式。通常图像处于纵向模式,并且我将 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 页。$perPage当我设置为每页 2 个项目时,我希望能够告诉分页器这样处理它。这样它就不会同时显示横向图像和纵向图像,只显示该页面的横向图像。

标签: phplaravelpagination

解决方案


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

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

$limit = 20;
$query->pagination($limit);

推荐阅读