Добавить ключ к сообщению об ошибке проверки в laravel

Я создаю json REST API. Мне нужно расширить библиотеку проверки, чтобы добавить статический тег "error":"validation_failed" для всех выходных данных json, которые не прошли проверку.

    // create the validation rules ------------------------
    $rules = array(
        'firstName'         =>  'required',
        'lastName'          =>  'required',
        'email'             =>  'required|email|unique:users', 
        'reg_type'          =>  'required|in:'.implode(",", $this->types),
        'oauthUId'          =>  'required_if:reg_type,'.implode(",", $this->externalTypes),
        'password'          =>  'required_if:reg_type,email',
        'parentId'          =>  'sometimes|integer|exists:user_accounts,id',
    );

    // do the validation ----------------------------------

    $validator = Validator::make(Input::all(), $rules);

    // check if the validator failed -----------------------

    if ($validator->fails()) {
        // get the error messages from the validator
        return $validator->messages();
    }
    else {
        // validation successful ---------------------------
    }

Я проверил laravel / validator.php и обнаружил, что его нужно добавить в объект Illuminate \ Support \ MessageBag.

$this->messages->add($attribute, $message);

Как это сделать, расширив класс валидатора.

Мне нужен такой вывод json

{
"error":
"validation_failed",
"firstName":
"The first name field is required.",
"lastName":
"The last name field is required.",
"reg_type":
"The selected reg type is invalid."
}

person Arun Unnikrishnan    schedule 26.09.2014    source источник


Ответы (1)


Вероятно, вы можете реализовать свой собственный класс валидатора и добавить к нему:

class MyValidator extends Validator {

    public function passes()
    {
        if ( ! $passes = parent::passes())
        {
            $this->addError('error', 'validation_failed', []);
        }

        return $passes;
    }

}
person Antonio Carlos Ribeiro    schedule 26.09.2014