Laravel 8表单验证如何实现两个字段值不相同的比对校验
Laravel 8 内置了different验证规则,可直接实现两个字段值必须不同的校验需求,修改现有验证规则即可:
public function store(Request $request) { $validatedData = $request->validate([ 'local_team' => 'required|different:visitor_team', 'local_score' => 'required|numeric', 'visitor_team' => 'required', 'visitor_score' => 'required|numeric', ], [ // 可选配置:自定义错误提示 'local_team.different' => '主队和客队不能为同一支队伍' ]); $score = new Score(); $score->local_team = $request->local_team; $score->local_score = $request->local_score; $score->visitor_team = $request->visitor_team; $score->visitor_score = $request->visitor_score; $score->save(); $new = true; return redirect()->route('scores.show', ['id' => $score->id, 'new' => true]); }
如果后续有更复杂的字段比对逻辑,也可以使用闭包自定义验证规则实现:
$validatedData = $request->validate([ 'local_team' => [ 'required', function ($attribute, $value, $fail) use ($request) { if ($value == $request->visitor_team) { $fail('主队和客队不能为同一支队伍'); } }, ], 'local_score' => 'required|numeric', 'visitor_team' => 'required', 'visitor_score' => 'required|numeric', ]);
内容的提问来源于stack exchange,提问作者Enrique
相关产品推荐
相关产品推荐

