Пытаюсь отобразить сообщение об ошибке проверки, что Laravel в Аксиос

Пытаюсь отобразить сообщение об ошибке проверки, что Laravel в Аксиос

20.01.2020 09:49:26 Просмотров 42 Источник

Я пытаюсь отобразить ошибки, полученные от проверки laravel в моем приложении с помощью axios, но он продолжает отображать эту ошибку. Контроллер проверяет пользователя и любое незаполненное поле. он вернет ошибку, которая будет отображаться на странице с помощью axios.

Ошибка:

VM12049:87 Uncaught (in promise) TypeError: Cannot read property '0' of undefined
at <anonymous>:87:80
(anonymous) @ VM12049:87
XMLHttpRequest.send (async)
(anonymous) @ VM12045:8
e.exports @ VM12045:8
e.exports @ VM12045:8
Promise.then (async)
r.request @ VM12045:8
r.<computed> @ VM12045:8
(anonymous) @ VM12045:2
updateProfile @ VM12049:68
(anonymous) @ VM12049:32
dispatch @ VM12044:2
v.handle @ VM12044:2

мой код

Аксиос код

  axios.post('/update-student-info', data, {
        "x-csrf-token": $("[name=_token]").val(),
        'content-type': 'multipart/form-data'
    })
        .then(response => {
            if (response.status === 200) {
                Swal.fire({
                    title: 'Information Updated',
                    text: '',
                    icon: 'success',
                    confirmButtonText: 'continue',
                    allowOutsideClick: false
                })
                $("#profile").val("");
                $("#update").text("Update");

            }
        }).catch(error => {

        first_name_error.text(error.response.data.errors.first_name[0]);
        last_name_error.text(error.response.data.errors.last_name[0]);
        phone_error.text(error.response.data.errors.phone[0]);
        fac_id_error.text(error.response.data.errors.fac_id[0]);
        dept_id_error.text(error.response.data.errors.dept_id[0]);
        console.log(error.response.data.errors);

    }).finally(() => {
        $("#profile_updates").html('Update');

    });

код контроллера

    public function updateStudentInfo(Request $request){
    $request->validate(
         [
            'first_name' => 'required|string|max:50',
            'last_name' => 'required|string|max:50',
            'phone' => 'required',
            'fac_id' => 'required',
            'dept_id' => 'required'
        ],[
        'fac_id.required' => 'This Field is required',
        'dept_id.required' => 'This Field is required'
    ]);

    try {

            OtherInstitutionStudents::where('email', Auth::user()->email)->update([
                'first_name' => $request->get('first_name'),
                'last_name' => $request->get('last_name'),
                'phone' => $request->get('phone'),
                'institution_id' => $request->get('fac_id'),
                'institution_level' => $request->get('dept_id')
            ]);

    } catch (ValidationException $e) {
        return response()->json([
            'status' => 'error',
            'msg' => 'error',
            'errors' => $e->errors()
        ], 422);
    }
    return response()->json($request->all());

}

Что же мне делать?.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59829296/trying-to-display-laravel-validation-error-in-axios#comment105796365_59829296
Не могли бы вы добавить свой код контроллера ?

Ответы - Пытаюсь отобразить сообщение об ошибке проверки, что Laravel в Аксиос / Trying to display laravel validation error in axios

Является ответом!
Jacob Hyde

21.01.2020 12:57:48

Вы предполагаете, что у вас будет ошибка для каждого поля, что, вероятно, не так. Итак, этот код:

first_name_error.text(error.response.data.errors.first_name[0]);
last_name_error.text(error.response.data.errors.last_name[0]);
phone_error.text(error.response.data.errors.phone[0]);
fac_id_error.text(error.response.data.errors.fac_id[0]);
dept_id_error.text(error.response.data.errors.dept_id[0]);

Вероятно, следует пересмотреть, чтобы:

if (error.response.data.errors.first_name) {
   first_name_error.text(error.response.data.errors.first_name[0]);
}
if (error.response.data.errors.last_name) {
   last_name_error.text(error.response.data.errors.last_name[0]);
}
if (error.response.data.errors.phone) {
   phone_error.text(error.response.data.errors.phone[0]);
}
if (error.response.data.errors.fac_id) {
   fac_id_error.text(error.response.data.errors.fac_id[0]);
}
if (error.response.data.errors.dept_id) {
   dept_id_error.text(error.response.data.errors.dept_id[0]);
}
https://stackoverflow.com/questions/59829296/trying-to-display-laravel-validation-error-in-axios/59831420#comment105810357_59831420
Сработало как заклинание. Спасибо
Закрыть X