首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mcamara/laravel定位-命名为路线定位

问mcamara/laravel定位-命名为路线定位
EN

Stack Overflow用户
提问于 2018-05-28 15:51:48
回答 2查看 2K关注 0票数 2

我根据文档在laravel 5.6中设置了laravel 5.6库,在users表中创建了lang列,我在每次用户切换语言时都会设置该列(这允许我以适当的语言发送“后台”循环电子邮件或在用户登录后设置合适的语言)。我在web.php中设置了LaravelLocalization::setLocale()组中的所有路径(如文档所述)。

我希望在我的控制器中使用名为的路由,例如在用户登录后重定向到正确的页面(用户来自登陆页面,但他的lang='pl')。在我的LoginController@redirectTo()中,我只使用:

代码语言:javascript
复制
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'

它不起作用。我在文档中找不到这方面的直接指导。

那怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 15:51:48

几个小时后,我终于在网上找到了这个解决方案:

代码语言:javascript
复制
$url = LaravelLocalization::getLocalizedURL($locale, route($routeName));

并创建以下辅助函数来实现此任务

代码语言:javascript
复制
function localRoute($routeName, $locale = null)
{
    if (!$locale && Auth::user())  $locale = Auth::user()->lang;

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

在我们的控制器中,我们可以这样使用它:

代码语言:javascript
复制
$url =  localRoute('dashboard.index');

但对此是否存在更好的方法呢?

票数 4
EN

Stack Overflow用户

发布于 2019-11-29 07:31:42

我解决了这个问题

成功的授权,您需要从数据库发送用户区域设置。

LoginController\authenticated

代码语言:javascript
复制
\LaravelLocalization::setLocale(\Auth::user()->language);

在HTML页面上指定活动区域设置

代码语言:javascript
复制
<html lang="{{ \LaravelLocalization::setLocale(\Auth::user()->language) }}">
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50569893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档