Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /speakers
- /speaker/{slug}
- /2017/speakers
- /2017/speaker/{slug}
- /2016/speakers
- /2016/speaker/{slug}
- Route::group(['middleware' => ['web']], function() {
- $routeGen = function($decorator) {
- Route::get('/speakers', 'SpeakerController@all')->name($decorator('speakers'));
- Route::get('/speaker/{slug}', 'SpeakerController@show')->name($decorator('speaker'));
- };
- // current conference
- Route::group(['middleware' => ['yearVerifier']], function() use ($routeGen) {
- $routeGen(function($name) { return 'currentYear.'.$name;});
- });
- // previous conferences
- Route::group(['prefix' => '{year}', 'middleware' => ['yearVerifier']], function() use ($routeGen) {
- $routeGen(function($name) {return $name;});
- });
- });
- public function handle($request, Closure $next, $guard = null)
- {
- $years = Cache::remember('conferenceyears.list', 5, function() {
- return ConferenceYear::all('year')->map(function($conferenceYear) {
- return $conferenceYear->year;
- })->toArray();
- });
- // TODO: probably this is not the best way to make this info globally available
- $request->merge(['nextConferenceYear' => max($years)]);
- if (is_null($request->year)) {
- $request->merge(['year' => $request->nextConferenceYear]);
- } else {
- if ($request->year == $request->nextConferenceYear) {
- return redirect('/');
- }
- }
- if (!in_array($request->year, $years)) {
- return redirect('/');
- }
- // TODO: probably this is also not the right way to make this info globally available in the views
- view()->share('nextConferenceYear', $request->nextConferenceYear);
- view()->share('currentConferenceYear', $request->year);
- return $next($request);
- }
- @if ($nextConferenceYear == $currentConferenceYear)
- {{ route('currentYear.speaker', ['slug' => $speakerSlug]) }}
- @else
- {{ route('speaker', ['slug' => $speakerSlug, 'year' => $currentConferenceYear]) }}
- @endif
Add Comment
Please, Sign In to add comment