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'
);
自定义错误消息不适用于自定义规则,请参阅变量 $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'
);