Nadziobałem własny routing pozwalający na użycie pełnych slugów: adres strona.pl/to-jest-jakis-tam-slug wywołuje odpwiadający slugowi kontroler akcji parametry. efekty uzyskałem poprzez middleware-a. Wszystko działa fajnie ale jest jeden poważny problem. Jeśli nie ma zdefiniowanego routingu w bazie uzyte w middleware return $next($request); nie powoduje szukania w innych regułach routingu (np cześć administracyjna w ścieżce /admin ) tylko wyświetla pustą stronę.
Czy wiecie może jak można poradzić sobie z tym problemem? Np czy jest jakiś parametr dający możliwość dodania wykluczeń do danej reguły routingu? Ktoś? Coś?
Plik middlewarea:
<?php namespace App\Modules\Front\Http\Middleware; use App; use Closure; use Route; use App\Modules\Front\Models\SluggableModel; class FrontendSlugRoute { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @internal param $slug * @return mixed */ public function handle($request, Closure $next) { if($slug = SluggableModel::where('slug', $request->slug)->first()){ App::call([app($slug->controller), $slug->action], $slug->params); exit; } else{ return $next($request); } } else{ return $next($request); } } }
zawartość pliku route.php dla tego routingu
Route::get('/{slug}', ['as' => 'sluggable', 'middleware' => 'sluggable', function () { }])->where('slug', '.*');