在Laravel中,您可以为验证者制作自定义消息。但我发现准备好的消息有点不对劲。使用before
和after
验证规则,参数的转换为strtotime
,如documentation中所述。
因此,如果我设置规则'expires' => 'before:+1 year'
,则规则正常并且正确。但是如果用户输入了错误的值,Laravel就会打印出如下信息:
到期日必须是+1年前的日期
此消息对于普通客户来说非常不清楚。我预计该消息将使用strtotime
进行转换。
有一种干净的方法可以打印更清晰的错误消息吗?
答案 0 :(得分:0)
如果您愿意,可以使用自定义覆盖验证消息。
在Form Request类中,添加以下方法并更改消息,如下所示:
public function messages()
{
return [
// 'fieldname.rulename' => 'Custom message goes here.'
'email.required' => 'Er, you forgot your email address!',
'email.unique' => 'Email already taken m8',
];
}
更新
如果要更改全局消息,可以打开resources/lang/en/validation.php
中的validation.php文件并在那里编辑消息。
答案 1 :(得分:0)
您可以使用AppServiceProvider.php
并且您可以在那里编写新的验证规则,并在validation.php文件中设置错误消息
/app/Providers/AppServiceProvider.php
/resources/lang/en/validation.php
前:
Validator::extend('before_equal', function ($attribute, $value, $parameters) {
return strtotime(Input::get($parameters[0])) >= strtotime($value);
});
,消息是
'before_equal' => 'The :attribute field is only accept date format before or equal to end date',
请尝试此操作,您可以根据需要对其进行更改。