mcamara / laravel-localization названные маршруты локализация - PullRequest
0 голосов
/ 28 мая 2018

Я установил mcamara / laravel-localization 1.3 библиотека в laravel 5.6 в соответствии с документацией и в users таблице я создаю lang столбец, который я устанавливаю каждый раз, когда пользователь переключает язык (это позволяетмне отправлять «фоновые» циклические электронные письма на соответствующем языке или устанавливать правильный язык после входа в системуЯ установил все свои маршруты в web.php в группе LaravelLocalization::setLocale() (как сказано в документации).

Я хочу использовать именованные маршруты внутри моих контроллеров, например, для перенаправления на соответствующую страницу после входа пользователя(пользователь пришел с целевой страницы EN, но его lang='pl').Когда в моем LoginController@redirectTo() я использую только:

App::setLocale(Auth::user()->lang);
$url =  route('dashboard.index');
return $url;

// current result $url = 'http://ebnavi.localhost/en/panel/raporty'
// desired result $url = 'http://ebnavi.localhost/pl/panel/raporty'

Это не работает.Я не нашел прямой инструкции в документации по этому поводу.

Так как это сделать?

1 Ответ

0 голосов
/ 28 мая 2018

Через несколько часов, наконец, я нашел это решение в интернете:

$url = LaravelLocalization::getLocalizedURL($locale, route($routeName));

И создал следующую вспомогательную функцию для реализации этой задачи

function localRoute($routeName, $locale = null)
{
    if (!$locale && Auth::user())  $locale = Auth::user()->lang;

    return $locale ? LaravelLocalization::getLocalizedURL($locale, route($routeName)) : route($routeName);
}

В нашем контроллере мы можем просто использовать его следующим образом:

$url =  localRoute('dashboard.index');

Но может быть, существует какой-то лучший подход для этого?

...