我根据文档在laravel 5.6中设置了laravel 5.6库,在users表中创建了lang列,我在每次用户切换语言时都会设置该列(这允许我以适当的语言发送“后台”循环电子邮件或在用户登录后设置合适的语言)。我在web.php中设置了LaravelLocalization::setLocale()组中的所有路径(如文档所述)。
我希望在我的控制器中使用名为的路由,例如在用户登录后重定向到正确的页面(用户来自登陆页面,但他的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'它不起作用。我在文档中找不到这方面的直接指导。
那怎么做呢?
发布于 2018-05-28 15:51:48
几个小时后,我终于在网上找到了这个解决方案:
$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');但对此是否存在更好的方法呢?
发布于 2019-11-29 07:31:42
我解决了这个问题
成功的授权,您需要从数据库发送用户区域设置。
LoginController\authenticated
\LaravelLocalization::setLocale(\Auth::user()->language);在HTML页面上指定活动区域设置
<html lang="{{ \LaravelLocalization::setLocale(\Auth::user()->language) }}">https://stackoverflow.com/questions/50569893
复制相似问题