【发布时间】: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