我是laravel框架和OOP的新手。我正在构建一个小型的webapp。
每次在网站上返回的内容之一就是今天的日期。为了生成今天的日期,我像这样使用碳
我认为 {{ carbon\carbon::today()->formatLocalized(' %d %B %Y') }}
。
工作正常,并给我回复以下内容:" 2017年3月1日"。因为我的应用程序假设是荷兰语,我已经搜索了将日期设置为荷兰语的功能。我发现了这个:setlocale(LC_ALL, 'nl_NL');
什么工作正常,除了我必须将它添加到我用于需要日期的视图的每个控制器方法。
对此有更好/更清洁的解决方案吗?像某个地方我可以将它设置为全局。
答案 0 :(得分:3)
两种方式:
1)一个BaseController类,在__construct()中可以使用setlocale(),接下来从BaseController类派生每个本地化控制器。 2)在中间件中
不知道您的语言环境是否可以根据请求更改(即?locale = xx),是存储在authenticad用户还是其他方式,但上述2种方法应适用于固定或更改的语言环境。
我使用中间件方式:
public function handle($request, Closure $next)
{
$locale = false;
if(Auth::user()){
$locale = Auth::user()->locale;
}elseif(session()->has('locale')) {
$locale = session('locale');
}elseif($request->has('locale')) {
$locale = request('locale');
}
if($locale && array_key_exists($locale, config('app.locales'))) {
app()->setLocale($locale);
setlocale(LC_ALL, $locale);
}
return $next($request);
}