【发布时间】:2016-04-29 12:10:22
【问题描述】:
我想在 Laravel 中的任何内容加载之前基于 URL(如 http://de.domain.com 或 http://es.domain.com)设置一个会话,并考虑在 ConfigServiceProvider 中执行此操作:
public function boot() {
// set language
$parse = parse_url(url());
$url_array = explode('.', $parse['host']);
if($url_array[0] == 'domain' || $url_array[0] == 'www') {
Session::put('current_language', Language::where('short', 'EN')->get());
App::setLocale('en');
} else {
Session::put('current_language', Language::where('short', strtoupper($url_array[0]))->get());
App::setLocale($url_array[0]);
}
}
但这根本不起作用。在Routes 中设置它会设置会话,但在页面加载并因此在下一页上工作之后,而不是在当前页面上。
最好的方法是什么?因为在Routes 中设置它肯定不是一个好主意
【问题讨论】:
-
整个应用程序中的语言都是使用
session('current_language')获取的。这可以使用语言切换按钮进行设置,但出于统计目的,我们希望为每个子域设置语言。由于子域需要直接访问,我需要为每个会话变量设置语言 -
如果用户使用es.domain 地址当然应该将内容的语言更改为西班牙语,因此需要存储会话
标签: php laravel session laravel-5