gagablik
@gagablik
Начинающий Web разработчик

Как правильно реализовать валидацию формы в Laravel 6 при её отправке средствами AJAX?

Добрый день. Помогите понять последовательность валидации формы, при отправки формы через AJAX (laravel 6)

1. В AJAX данные из формы я беру при помощи $('#form').serialize() и передаю их по action формы.
2. В контроллере принимаются эти данные и отправляются в валидатор
Validator::make($request->all(), [
    // правила
])->validate();

3. Если проверки не проходят, то валидатор формирует JSON с ошибками и отправляет их обратно. Ошибки обрабатываются при помощи JS и выводятся.

4. Если ошибок нету, то как правильно осуществить редирект на начальную форму? Если бы это была обычная проверка, без AJAX, я бы прописал
return back()->with('message', 'Изменения сохранены.');
после валидации в контроллере. Как реализовать в JS код выше? (редирект на начальную и запись в сессию).

5. При отправке формы средствами AJAX происходит проверка CSRF?

6. Правильно ли всё реализуется, нужно ли ещё что то делать или какие-то дополнительные проверки. Спасибо за разъяснение, хочется послушать мнение знающих людей.
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
Kulaxyz
@Kulaxyz
Могу лучше
Прочитайте про form request, и уберите в контроллере Validator::make. После основного участка кода пишете
return response()->json(['message' => 'изменено'] ,200);

Таким же образом можете передавать любые параметры в ответе и на клиенте получаете response и обращаетесь к response.data.
У вас в head должно быть мета поле csrf и добавить его значение как header, иначе, просто выбьет ошибку 419.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Just__Den
FULL STACK
2.
public function update(Request $request, Post $post, $id)
    {

        $request->validate([ 
           // rules
        ]);

        // действия с БД

        return response()->json([
            'status' => true,
            'message' => 'данные изменены'
        ]);
        
    }


4. Куда ты будешь редирект делать в ajax'e ? Смысл ajax в том, что отправка без редиректов и перезагрузки

5. Да. Крепи csrf к заголовку как указано в документации

6. Проверку полученных данных в JS ( подходят ли данные для JSON.parse ) через try-catch
Ответ написан
Ваш ответ на вопрос

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

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