Почему проверка Laravel всегда возвращает сообщение по умолчанию? - PullRequest
0 голосов
/ 02 октября 2019

Когда я отправляю неправильные данные на сервер с помощью AJAX, Laravel проверяет их и выдает сообщение об ошибке:

The given data was invalid.

Проверка моих запросов:

class RegistrationRequest extends FormRequest
{

    public function authorize()
    {
        return true;
    }

    public function messages()
    {
        return [
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6',
        ];
    }

    public function rules()
    {
        return [
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6',
        ];
    }
}

Использование:

public function register(RegistrationRequest $request){}

Исключения обработчика:

 public function render($request, Exception $exception)
    {

        if ($exception instanceof ValidationException) {
            return response()->json(['type' => 'error', 
                'codes' => [$exception->getMessage()]], 400);
        }

        return parent::render($request, $exception);
    }

Ответы [ 2 ]

2 голосов
/ 02 октября 2019

Это то, что вы сказали сделать в обработчике исключений, когда вы переопределили вывод по умолчанию, чтобы просто отобразить $exception->getMessage(). Это сообщение для ValidationException.

Встроенный обработчик исключений уже имеет обработку для обоих запросов AJAX, которые ожидают результаты JSON и ValidationException s . Если вы собираетесь переопределить его, вы захотите имитировать эту функциональность ... но в большинстве случаев вам следует просто оставить его в покое.

Важным битом обработчика по умолчанию является this :

return response()->json([
    'message' => $exception->getMessage(),
    'errors' => $exception->errors(),
], $exception->status);
1 голос
/ 02 октября 2019

Если вы хотите настроить проверку. Просто добавьте эту функцию:

protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator){
$response = new JsonResponse([
    'status' => false,
    'errors' => $validator->errors()->all(),
  ], 200);

throw new \Illuminate\Validation\ValidationException($validator, $response);}

И не забудьте use Illuminate\Http\JsonResponse;

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