You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:06:04