Laravel中的常用功能?

时间:2018-11-23 21:46:51

标签: laravel laravel-5

我对以下问题感到困惑:如果所有控制器(例如,具体控制器的方法)都有通用的代码,可以检测模型请求的可用语言:

public function language(Request $request) 
{
    $languages = ["en", "it"];
    $default = "en";

    return in_array($request->language, $languages) ? $request->language : $default;
}  

因此,某些控制器包含此方法,我认为这是不对的:

Model::where("Lang", this.language())->get();

在哪里退出此方法language()以避免在每个控制器中重复代码?应该使用注入服务还是简单的静态类帮助程序?

1 个答案:

答案 0 :(得分:2)

有很多方法可以实现您想要的。这是您可以做的一个例子。由于此功能似乎与请求相关联,您可以将其作为宏添加到请求中:

在您的一家服务提供商中进行:

 Illuminate\Http\Request::macro('getLanguage', function () {
      $languages = ["en", "it"];
      $default = "en";
      return in_array($this->language, $languages) ? $this->language : $default;
 });

然后您可以将其用作请求的一部分,例如:

 request()->getLanguage(); //using the helper
 Request::getLanguage(); //Using the request facade
 $request->getLanguage(); //If you already have a request object.