Laravel能否为Validator传递指定Locale参数?
Laravel验证器指定Locale的方法
当然可以为验证器指定es或en这类Locale参数,以下是两种常用实现方式:
方法一:临时切换全局Locale
在验证前临时切换应用的Locale,验证完成后恢复原Locale,避免影响其他业务逻辑:
// 保存当前默认Locale $originalLocale = app()->getLocale(); // 切换到目标Locale app()->setLocale('es'); // 执行验证 $validatedData = $request->validate(UserValidator::$updateIfNeeded); // 恢复原Locale app()->setLocale($originalLocale);
方法二:手动创建Validator实例并指定Locale
使用Validator facade手动构建验证实例,直接通过setLocale方法指定目标Locale,无需修改全局设置:
use Illuminate\Support\Facades\Validator; // 创建验证器实例并指定规则 $validator = Validator::make($request->all(), UserValidator::$updateIfNeeded); // 设置目标Locale $validator->setLocale('es'); // 检查验证结果 if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // 获取验证通过的数据 $validatedData = $validator->validated();
注意事项
确保你已经在项目的resources/lang目录下,准备好了对应Locale的验证语言文件(例如resources/lang/es/validation.php),否则会 fallback 到默认Locale的语言文件。
内容的提问来源于stack exchange,提问作者gabogabans
相关产品推荐
相关产品推荐

