Laravel Nova - Не вижу сообщений об ошибках валидации - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над проектом с приборной панелью Nova. Почему-то я не вижу сообщений об ошибках валидации.

Если есть ошибка проверки, я могу видеть это как исключение в консоли браузера. Но не в Nova UI.

Я вижу сообщение об успехе, если все поля формы введены правильно.

Я новичок в Nova, может кто-нибудь помочь мне отладить эту проблему? Я имею в виду, я не знаю, где искать, чтобы выяснить эту проблему

Ошибка трассировки из браузера :

{
    "errors":"Sorry, something went wrong.",
    "exception":"Illuminate\\Validation\\ValidationException",
    "message":"The given data was invalid.",
    "trace":[{
        "file":"\/home\/ausvacs\/public_html\/nova\/src\/PerformsValidation.php",
        "line":18,
        "function":"validate",
        "class":"Illuminate\\Validation\\Validator",
        "type":"->",
        "args":[]
    }]
}

Метод полей модели агентства Новая (название таблицы: агентство) :

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),

        Text::make('Name')
            ->sortable()
            ->rules('required', 'string'),

    ];
}

Ошибка в консоли браузера :

enter image description here

Исключение на вкладке сети браузера :

enter image description here

1 Ответ

0 голосов
/ 23 ноября 2018

Проблема была в обработчике (app / Exceptions / Handler.php). Не уверен, что предыдущий разработчик обновил эту функцию. В любом случае, проблемы в этой функции:

  • Код состояния, возвращаемый в случае исключения проверки, равен 400, то есть необходимо 422. Тогда только компоненты Vue будут отображать сообщения проверки.
  • Кроме того, здесь ошибки помещаются в индекс «проверки» массива «ответа». Но компонент Vue проверяет индекс «ошибок» массива «ответа».

    public function render($request, Exception $exception)
    {    
        if ($request->ajax() || $request->wantsJson()) {

            $response = ['errors' => 'Sorry, something went wrong.'];

            $status = 400;

            if ($this->isHttpException($exception)) {
                $status = $exception->getStatusCode();
            }

            if (get_class($exception) == 'Illuminate\Validation\ValidationException') {
                $response['validation'] = $exception->validator->errors();
            }

            return response()->json($response, $status);
        }

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

Проблема была исправлена, когда я обновил код, возвращая код ошибки как 422 в случае исключения проверки, и поместил ошибки в индекс «ошибки» ответа вместо индекса «проверки».

...