laravel - Laravel中的常用功能?
问题描述
我对以下问题感到困惑:如果所有控制器都有一个通用代码,例如具体控制器的方法,可以检测模型请求的可用语言:
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()
避免每个控制器中的代码重复?它应该是注入服务还是简单的静态类助手?
解决方案
有很多方法可以实现您想要的。这是你可以做的一个例子。由于此函数似乎与请求相关联,因此您可以将其作为宏添加到请求中:
在您的服务提供商之一中执行以下操作:
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.
推荐阅读
- ios - 从 Swift 中的 NsDIctionary 获取价值
- mysql - 使用 Sequelize.js 的多年数据
- c++ - 为什么向量的变化没有反映在二维向量中?
- web-scraping - Rvest:从 csv 中抓取多个 URL
- c - C 只读取第一个结构,不能读取其他输入
- c# - 在 .NET Standard/Core 中序列化 MethodInfo
- android - 带有外部按钮的底部导航活动
- mysql - MySQL查询以获取开始日期和结束日期之间的差异总和
- kotlin - Kotlin Coroutines :: 忽略后续协程调用的“最佳实践”
- angular - 点击事件后的角度搜索