我的任务是在数据库中放置一些带有日期/时间和 3 种语言描述的事件。所以我制作了带有字段的表格 ->日期时间,RU,LV,EN。
我可以将信息放入数据库,到目前为止一切都很棒。但是现在我在控制所选语言的描述输出时遇到了问题。我让它在刀片中控制它,但不确定这是否是好的做法,所以我想知道如何在控制器中控制信息。
这是控制器:
public function mafia(){
$games = Mafiagame::all();
//if(App::isLocale('lv')){
// $game = DB::table('mafiagames')->pluck('lv');
//}
//elseif(App::isLocale('en')){
// $game = DB::table('mafiagames')->pluck('en');
//}
//elseif(App::isLocale('ru')){
// $game = DB::table('mafiagames')->pluck('ru');
//}
// $gametime = DB::table('mafiagames')->pluck('gametime');
return view ('pages.mafia')->with('games', $games);
}
正如你所看到的,这些评论是我试图为我的目标创造一些东西......
这是刀片:
@if (count($games) >0)
@foreach ($games as $games)
<div class ="info_area col-12">
<p>
{{$games->gametime}}
</p>
@if (App::isLocale('en'))
<p>
{{$games->en}}
</p>
@elseif (App::isLocale('ru'))
<p>
{{$games->ru}}
</p>
@elseif (App::isLocale('lv'))
<p>
{{$games->lv}}
</p>
@endif
</div>
@endforeach
@endif
我认为您在这里采取了错误的方法,并且没有将laravel的内置功能用于多语言用途。
有一个翻译部分可用于多种语言,并且它不存储在数据库中。我认为您应该做的是在数据库中存储一个通用/共同点(例如英语措辞和 UTC 日期),并使用翻译和评估器输出信息。
参考资料如下
https://laravel.com/docs/5.6/eloquent-mutators#defining-an-accessor https://laravel.com/docs/5.6/localization
我喜欢这样想:
- 有人向终结点提交信息
- 请求转到表单验证,以验证其内容
- 它进入控制器
- 应用所需的逻辑
- 返回响应
输出,这是请求者的责任,在本例中为视图(边栏选项卡)部分。但是,如果您想在控制器内部进行转换,那也没关系,这完全取决于您的最终目的。