Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Как получить ответ валидатора если статус ответа сервера 422?

Здравствуйте, мне нравится это разделение, валидация данных происходит в отдельном классе Form Requests:
CategoryRequest
class CategoryRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|max:255',
            'title' => 'required|max:150',
            'keywords' => 'max:212',
            'description' => 'required'
        ];
    }
}

Мой метод контроллера где происходит валидация с помощью класса CategoryRequest
Метод store
public function store(CategoryRequest $request)
    {
        HelperTransliterate::setTransliterateToRequest($request);
        $category = new Category();
        $category->store($request);
        if($request->hasFile('image')) {
            $path = HelperImage::resizeImage($request->file('image'),'categories',$category->id);
            $category->setImageAvatar($path[0]);
        }
        if($request->filled('srcImgTextContent')) {
            $paths = explode(',',$request->input('srcImgTextContent'));
            HelperImage::deleteFilesNotInRequest($paths,$category->getAllImageContentFormFolder());
            HelperCategory::contentSetImages($category,$paths);
        }
        else {
            $category->removeAllImageContent();
        }
        return response()->json(['status' => 'success']);
    }

Но проблема в том что статус ответа от сервера приходит такой: 422 Unprocessable Entity
И при выводе response в axios (javascript):
catch((response) => {
      console.log(response);
      this.showMsg = true;
      this.source.success = false;
      this.source.data = "Ошибка при сохранении";
})

Выводиться вот это:
Error: Request failed with status code 422
    at createError (vendor.js:547)
    at settle (vendor.js:710)
    at XMLHttpRequest.handleLoad (vendor.js:80)

То есть я не могу получить сообщения об ошибках для полей формы, подскажите пожалуйста как более грамотно решить данную проблему ? Заранее благодарю за ответ.
  • Вопрос задан
  • 908 просмотров
Решения вопроса 1
@jazzus
.catch((error)=> {
    this.errors = error.response.data.errors;
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы