Пользовательские сообщения проверки в Laravel - PullRequest
0 голосов
/ 11 января 2019

У меня проблема с пользовательскими сообщениями проверки в 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"
    ]
}

Пожалуйста, помогите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...