Laravel - 用翻译好的验证规则服务于API请求
Laravel  /  管理员 发布于 2年前   388
如果开发一个移动应用程序(或一个网站),通过API连接到Laravel CMS的动态内容。
现在, 这个应用程序可以是一个多语言的应用程序, 它希望从CMS接收一个翻译的内容.
通常, 在我们公司, 我们指示我们的前端开发人员在每一个请求中发送一个语言查询参数,以便提供正确的翻译内容.
例如:
GET /api/blogs?lang=en
然而, Laravel的验证并没有意识到这一点, 它总是根据应用程序的locale(或fallback locale)来返回验证错误信息.
因此,我们创建了一个路由中间件,它将所有的API路由分组,
并根据lang查询参数来设置应用程序的locale。
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class ChangeLocale
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
$locale = $request->query('lang');
if ($locale) {
app()->setLocale($locale);
}
return $next($request);
}
}
并在路由文件中:
// routes/api.php
use App\Http\Middleware\ChangeLocale;
use Illuminate\Support\Facades\Route;
Route::middleware(ChangeLocale::class)->group(function (): void {
// ROUTES
});
现在你的验证信息将采用所要求的语言。
如果你不喜欢通过查询参数来处理这个问题,你总是可以使用一个头或其他东西,
例如:
$locale = $request->header('Accept-Language');
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号