【问题标题】:Laravel 5.5 altering pagination for an item to be treated as 2 pagesLaravel 5.5 将项目的分页更改为 2 页
【发布时间】:2018-05-19 11:10:20
【问题描述】:

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

【问题讨论】:

  • 你的意思是如果图片是横向的,你想每页显示一张图片?如果肖像和风景在同一幅图像中会发生什么?每页 1 页?
  • @punk73 我的意思是横向图像相当于 2 页。当我将$perPage 设置为每页 2 个项目时,我希望能够告诉分页器这样对待它。这样它就不会同时显示横向图像和纵向图像,而只会显示该页面的横向图像。
  • 我的意思是横向图像相当于 2 页。 --> 你想在 2 页中显示一张图片?? 0.5个??
  • 当我将 $perPage 设置为每页 2 个项目时,我希望能够告诉分页器这样对待它。 --> 意思是你在一页显示两张风景图片对吗?
  • 不,它的 1 张横向图片显示为 2 页。人像图片将显示为 1 页,并将与另一张人像图像组合成 2 页

标签: php laravel pagination


【解决方案1】:
if($chapter) {
  $query->where('attachment_id', $chapter);
}

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

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

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 2014-12-29
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多