У меня проблема с пользовательскими сообщениями проверки в laravel.
Я хочу проверить запрос на создание пользователя, у меня есть данные следующим образом:
first_name:Akhsay
middle_name:R
last_name:Doe
gender:male
miscellaneous:{"dob":"","birth_name":"xyz"}
Я создал правила проверки для создания пользователя в userCreateRequest.php как
public function rules()
{
return [
'first_name' => 'required',
'middle_name' => 'required',
'last_name' => 'required',
'gender' => 'required',
'miscellaneous' => 'json|validate_misc_info',
];
}
/**
* validation messages
*
* @return array
*/
public function messages()
{
return [
"first_name.required" => "First name is required.",
"middle_name.required" => "Middle name is required.",
"last_name.required" => "Last name is required.",
"gender.required" => "Gender is required.",
'miscellaneous.validate_misc_info' => '(**want to show specific error message here**)?'
];
}
Для разной информации я создал собственного поставщика услуг валидации, а в методе загрузки пользовательского валидатора я написал код валидации как
Validator::extend('validate_misc_info',function($attribute, $value, $params, $validator) {
$data = json_decode($value, true);
$rules = [
"dob" => "required|date",
"birth_name" => "required|min:2|max:50",
];
$messages= [
"dob.required" => "Date of birth is required",
"birth_name.required" => "Birth name is required",
];
$validator = $data ? Validator::make($data, $rules, $messages) : false;
if ($validator && $validator->fails()) {
return false;
}
return true;
});
Но когда я использую это правило проверки в userCreateRequest.php как
public function rules()
{
return [
'first_name' => 'required',
'middle_name' => 'required',
'last_name' => 'required',
'initial' => 'required',
**'miscellaneous' => 'json|validate_misc_info',**
];
}
Это показывает мне ошибку как
{
"message": "The given data was invalid.",
"errors": {
"miscellaneous": [
"validation.validate_misc_info"
]
}
но я хочу показать конкретное сообщение об ошибке как
{
"message": "The given data was invalid.",
"errors": {
"miscellaneous": [
"Date of birth is required"
]
}
Пожалуйста, помогите мне.