Laravel üzerinde şöyle bir yapı kurmak istiyorum.
site.com/routeadresi (2023 default veri)
site.com/2022/routeadresi
site.com/2021/routeadresi
Bunun İçin donem Ve Donemcurrent şeklinde 2 tane middlware oluşturdum. şu şekilde
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Session;
class donem {
public function __construct(){}
public function handle(Request $request, Closure $next)
{
$donem = $request->segment(1);
if( Session::get('donem') != null ){
URL::defaults(['donem' => '/']);
return $next($request);
}
if (in_array($donem, config('donemler'))) {
config(['donem'=>$donem]);
Session::put('donem', $donem);
URL::defaults(['donem' => config('donem')]);
return $next($request);
}
if (!in_array($donem, config('donemler'))) {
$segments=$request->segments();
$segments[]=2023;
return redirect(implode('/', $segments));
}
}
}
Ve
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class donemcurrent {
public function __construct(){}
public function handle(Request $request, Closure $next)
{
if( Session::get('donem') == null ){
$segments = $request->segments();
$donem = 2023;
$key = array_search($donem, $segments);
if(isset($key)){
unset($segments[$key]);
}
Session::put('donem', $donem);
return redirect(implode('/', $segments));
}else{
return $next($request);
}
}
}
web routeumda şu şekilde
Route::prefix('{donem?}')->middleware(['donem','donemcurrent'])->group(function () {
//TÜM ROUTE'LAR BURADA
}
İstediğim yapı oluşmuş oldu fakat site.com/route şeklinde Girdiğim Zaman Route Bulunamadı Hatası Alıyorum. Bu Sounu Nasıl Çözebilirim. Ve Çift Middlware Kullanmak Yerine Daha Optimize Bir Tavsiyeniz Varmı?