Laravel(5.3.24+) 验证:带有自定义错误消息的自定义验证

Laravel(5.3.24+) Validation: Custom Validation with Custom Error Message

自定义错误消息不适用于自定义规则,请参阅变量 $messages uniqueTeamNameForcomp。

自定义规则可以,rule:required 的自定义消息也可以。

为规则 uniqueTeamNameForComp 显示的错误消息是 "unique_team_name_for_comp",而它应该读取错误消息 "This name already exist for this competition"。

控制器:

public function store(Request $request){

    $rules = [
        'name'      => 'required|uniqueTeamNameForComp:'.$request->compzid,
        'compz'     => 'required'
    ];

    $messages = array(
        'uniqueTeamNameForComp' => 'This name already exist for this competition',
        'required'              => 'this works'
    );

    $this->validate($request,$rules,$messages);

}

服务提供商:

public function boot()
{
    Validator::extend('uniqueTeamNameForComp', function ($attribute, $value, $parameters, $validator) {
        $competitionId = $parameters[0];

        return count(Tteam::where("comp_id", "=", $competitionId)->whereName($value)->get()) == 0;
    });
}

您从 Laravel 看到的输出实际上给了您提示。它期望自定义消息由蛇形而不是驼峰形的验证规则键入。

$messages = array(
    'unique_team_name_for_comp' => 'This name already exist for this competition',
    'required'                  => 'this works'
);