Laravel 5.4 使用控制器控制数据库信息语言



我的任务是在数据库中放置一些带有日期/时间和 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

我喜欢这样想:

  1. 有人向终结点提交信息
  2. 请求转到表单验证,以验证其内容
  3. 它进入控制器
  4. 应用所需的逻辑
  5. 返回响应

输出,这是请求者的责任,在本例中为视图(边栏选项卡)部分。但是,如果您想在控制器内部进行转换,那也没关系,这完全取决于您的最终目的。

最新更新