Bry*_*ynJ 5 laravel laravel-5 laravel-validation
使用Laravel的本地化(http://laravel.com/docs/5.1/localization)我创建了一些自定义验证属性以提供更友好的验证错误(例如,'First Name'而不是名字等).
我正在使用表单请求(http://laravel.com/docs/5.1/validation#form-request-validation)以验证用户提交,并且在某些情况下我想提供特定于商店的自定义验证属性(对于例如,我可能有一个'name'字段,在一个上下文中是Brand Name,在另一个上下文中是Product Name.
messages()方法允许我指定特定于验证规则的消息覆盖,但这并不理想,因为它不是验证消息,因此我们需要覆盖,只需要覆盖属性名称(例如,如果我们有5个验证规则'电子邮件',我们必须在这里提供5个覆盖,而不是一个覆盖,比如说,客户电子邮件).
这个问题有方法解决吗?我注意到Laravel文档中对formatValidationErrors()和formatErrors()的引用,但实际上并没有关于如何正确覆盖这些内容的任何信息,而且我没有太多运气.
您可以覆盖属性名称,这些名称默认为字段名称.
在您的表单请求类中重写attributes()方法:
public function attributes()
{
return [
'this_is_my_field' => 'Custom Field'
];
}
Run Code Online (Sandbox Code Playgroud)
您可以使用第4个参数覆盖字段名称:
$this->validate($request, $rules, $messages, $customAttributes);
Run Code Online (Sandbox Code Playgroud)
要么
Validator::make($data, $rules, $messages, $customAttributes);
Run Code Online (Sandbox Code Playgroud)
Route::get('/', function () {
// The data to validate
$data = [
'this_is_my_field' => null
];
// Rules for the validator
$rules = [
'this_is_my_field' => 'required',
];
// Custom error messages
$messages = [
'required' => 'The message for :attribute is overwritten'
];
// Custom field names
$customAttributes = [
'this_is_my_field' => 'Custom Field'
];
$validator = Validator::make($data, $rules, $messages, $customAttributes);
if ($validator->fails()) {
dd($validator->messages());
}
dd('Validation passed!');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |