gpt4 book ai didi

php - mcamara/laravel-localization 命名路由本地化

转载 作者:行者123 更新时间:2023-12-03 16:13:26 24 4
gpt4 key购买 nike

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

我想在我的 Controller 中使用命名路由,例如用于在用户登录后重定向到正确的页面(用户来自 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'

这是行不通的。我没有在文档中找到关于此的直接说明。

那么怎么做呢?

最佳答案

几个小时后我终于找到了this solution在互联网上:

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

并创建以下 helper function实现这个任务

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

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

在我们的 Controller 中,我们可以这样使用它:

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

但是可能存在一些更好的方法吗?

关于php - mcamara/laravel-localization 命名路由本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com