VladSavelev
@VladSavelev
Good man

Как отобразить ошибки валидации в модальном окне при запросе AJAX?

К примеру я валидирую некоторые поля:

$this->validate($request,
            [
                'name'=>'required',
                'file'=>'required',
                'transport_position' => 'numeric|between:1,99'
            ]);


В модальном окне, где расположена форма, я вставляю по примеру
из документации:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif


Но нечего не приходит когда валидация не проходит.
Что я делаю не так?
Как правильно отобразить JSON ответ 422?
  • Вопрос задан
  • 668 просмотров
Решения вопроса 1
как делал это я, возможно быдлокод
<form enctype="multipart/form-data" class="gl_form">
<input type="text" name="name">
<input type="text" name="name2">
<input type="text" name="name3">
<div id="order" class="btn btn-success form-control">Заказать</div>
</form>

$('#order').on('click', function(){
        var msg   = $('.gl_form').serialize();
        $.ajax({
            type: 'post',
            url: '{{url()->current()}}',
            headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
            data: msg,
            dataType: 'json',
            success: function(data){
                 if(data.success == 'yes'){
                    $('.yes').html('<h3>Спасибо за ваш заказа. Мы скоро с вами свяжемся</h3>');
                 }
                $.each(data, function(key, val) {
                    $.each(val, function(keyy, vall) {
                        $('.zakaz').prepend(vall);
                    });
                });

                 
            }
    });
    });


В методе котроллера
вверху вставляем
use Illuminate\Http\Request;
use Validator;


потом пишем свой метод

public function Order(Request $request){

$messages = [
    'name.required' => 'Текст ошибки',
    'file.required' => 'Текст ошибки',
    'transport_position.numeric' => 'Текст ошибки',
    ];
$validator = Validator::make($request->all(), [
    'name'=>'required',
    'file'=>'required',
    'transport_position' => 'numeric|between:1,99'
    ],$messages);


//Если ошибки возвращаем респонс с ними
if ($validator->fails()) {
    return Response()->json(array('errors' => $validator->getMessageBag()->toArray()));
    }

//Если нет ошибок возвращаем респонс, что все окей
    return Response()->json(array('success' => 'yes'));
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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