У меня есть 2 файла роутов
web.php
и
web2.php
, для
web2.php
я установил в RouteServiceProvider префикс:
Route::middleware(['web','default_locale'])
->prefix('/{language?}')
->group(base_path('routes/web/web2.php'));
Где language устанавливается в зависимости от выбранного языка: es, en, ru. Устанавливаю я его вот так:
public function handle(Request $request, Closure $next)
{
if ($request->route()->parameter('language') != app()->getLocale()) {
$newLocale = $request->route()->parameter('language');
if (in_array($newLocale, config('app.available_locales'))) {
$this->setNewLanguage($newLocale,$request,$next);
} else {
$this->setNewLanguage('en',$request,$next);
}
} else {
URL::defaults(['locale' => \app()->getLocale()]);
}
return $next($request);
}
public function setNewLanguage($language,Request $request, Closure $next){
app()->setLocale($language);
session()->put('locale', $language);
URL::defaults(['language' => \app()->getLocale()]);
return $next($request);
}
. Так как главный язык - английский, мне не нужно в юрл показывать, что язык - en. Для этого, во время переключения языка, я исключаю его:
if($locale != \App\Http\Middleware\Localization::English){
URL::defaults(['language' => $locale]);
}else{
URL::defaults(['language' => '']);
}
Сейчас он не видит этих роутов без префикса, но если продублировать все роуты из web2.php в web1.php, все будет работать как нужно, но получается я просто продублировал маршруты, что довольно глупо. Как можно указать в RouteServiceProvider, что эта группа роутов, может и не быть с префиксом?