我在Laravel 5.1.45(LTS)上。一个俱乐部有很多活动。
我想显示一个页面,列出当前年份的所有事件(默认页面)。在页面的底部,我想要前一页和下一年的链接(每页一个链接,每年一页)。
这是我的PublicController:
public function index()
{
$events = Event::with('Club')
->orderBy('date', 'desc')
->get()
->groupBy(function($date) {
return Carbon::parse($date->date)->format('Y');
});
$currentPage = Paginator::resolveCurrentPage() - 1;
$perPage = 1;
$currentPageSearchResults = $events->slice($currentPage * $perPage, $perPage)->all();
$paginator = new LengthAwarePaginator($currentPageSearchResults, count($events), $perPage);
return view('events.index', ['events' => $paginator]);
}
这是我的观点:
@foreach ($events as $year)
@foreach ($year as $object)
{{ $object->date }}
{{ ... }}
@endforeach
@endforeach
{!! $events->setPath('/events/events')->appends(Request::except('page'))->render() !!}
这是有效的;我每年都会在一页和一页中获得一年中的所有活动。
但是,页面底部的链接当然是2016年活动的“?page = 2”形式。
我想要的是'?page = YEAR'形式的链接。并且,如果已经列出了明年的事件,那么如果没有向URL添加任何参数,则在页面上登陆当前年份的事件。
这甚至可能吗?