Laravel Multi-language Route Prefix - PullRequest
       10

Laravel Multi-language Route Prefix

1 голос
/ 24 июня 2019

Мне удалось заставить некоторые маршруты работать с префиксом и без него.Важно, чтобы маршруты, у которых нет префикса, работали должным образом, так как слишком много работы, чтобы вернуться назад и изменить все ссылки get / post на правильные локализованные.

Например, с кодом под URL localhost/blogперенаправляет на localhost/en/blog (или любой другой язык, сохраненный в сеансе).

Однако я заметил, что URL с параметрами не работают, поэтому /blog/read/article-name приведет к 404 вместо перенаправления на /en/blog/read/article-name.

Маршруты:

Route::group([
    'prefix' => '{locale}',
    'middleware' => 'locale'],
    function() {
        Route::get('blog', 'BlogController@index');
        Route::get('blog/read/{article_permalink}', 'BlogController@view');
    }
);

Промежуточное программное обеспечение отвечает за перенаправления, которые вообще не срабатывают для некоторых маршрутов, как если бы группа маршрутов не соответствовала URL-адресу.

public function handle($request, Closure $next)
{
    if ($request->method() === 'GET') {
        $segment = $request->segment(1);

        if (!in_array($segment, config('app.locales'))) {
            $segments = $request->segments();
            $fallback = session('locale') ?: config('app.fallback_locale');
            $segments = array_prepend($segments, $fallback);

            return redirect()->to(implode('/', $segments));
        }

        session(['locale' => $segment]);
        app()->setLocale($segment);
    }

    return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...