Префикс локализации Laravel — URL «/» не работает без локали

#laravel #localization

#laravel #локализация

Вопрос:

Я сделал то, что написано в этом посте, чтобы добавить префиксы локализации к своим URL-адресам. Однако, когда я посещаю «/» появляется ошибка: NotFoundHttpException in RouteCollection.php line 161: .

Это мой Routesfile web.php :

 Route::get('/', ['uses' => 'MainController@showMainPage', 'as' => 'showMainPage']);

Route::group(['prefix' => 'backend'], function () {
    Route::get('/login', ['uses' => 'UserController@agentLogin', 'as' => 'agentLogin']);
});
  

Функция:

 class MainController extends Controller
{
    public function showMainPage()
    {
        return redirect()->route('/fr');
    }
}
  

localhost:8000/fr и localhost:8000/en работают нормально.

Как я могу перенаправить / на резервную локаль ( /fr )?

Ответ №1:

Вы можете попробовать сделать параметр lang необязательным:

 'prefix' => '{lang?}'
  

Комментарии:

1. Да, это перенаправляет меня на / fr, однако страница прерывается из-за слишком большого количества перенаправлений. Я знаю почему, но не как я мог бы это решить

2. @Scarwolf а как насчет url localhost:8000/fr ? Правильно ли это работает? Только localhost:8000 приводит к слишком большому количеству перенаправлений?

3. Упс, пришлось заменить перенаправление на route() . Теперь все работает нормально, спасибо!

4. Ссылки на мои маршруты отображаются с /en в URL-адресах при включении localhost:8000 без /fr , хотя я установил резервную локаль на fr. Вы знаете, почему? Ссылка на моем маршруте выглядит следующим образом: {{ route('agentLogin') }} . Маршрут в web.php : ` Route::get(‘/login’, [‘uses’ => ‘UserController@agentLogin’, ‘as’ => ‘agentLogin’]);` Даже когда на странице /fr он отображается /en по ссылкам. Работал до того, как сделать переменную lang необязательной

5. Вы решаете эту проблему? Какой 'locale' => параметр у вас есть в app.php ?