2016-02-11 3 views
2

Я использую dropzone.js для загрузки файла. В моем методе контроллера У меня есть следующие проверки настройка:Dropzone.js и отображение ошибок проверки запроса в Laravel 5.1

$this->validate($request, ['logo' => 'image|mimes:jpg,jpeg,gif']); 

Если проверка не пройдена Он бросает ответ на 422 сервера с ошибками проверки как JSON

{"logo":["The logo must be an image.","The logo must be a file of type: jpg, jpeg, gif."]} 

С dropzone.js как я могу разбор ошибка и вставить в следующем <p> тега:

@if ($errors->has('logo')) <p class="help-block" id="logo-error">{{ $errors->first('logo') }}</p> @endif 

у меня есть ошибки событие объявлено в моем Dropzone сценарии, но ничего, кажется, появляется, когда я консоль .log:

var baseUrl = "{{ url('/') }}"; 
Dropzone.autoDiscover = false; 

$("#my-dropzone").dropzone({ 
    url: baseUrl + "/upload", 
    paramName: "logo", 
    uploadMultiple: false, 
    maxFiles: 1, 
    dictDefaultMessage: '', 
    init: function() { 
    this.on("addedfile", function(file) { 
     console.log('addedfile...'); 
     if (this.files[1]!=null){ 
     this.removeFile(this.files[0]); 
     } 
    }); 
    this.on("thumbnail", function(file, dataUrl) { 
     console.log('thumbnail...'); 
     $('.dz-image-preview').hide(); 
     $('.dz-file-preview').hide(); 
    }); 
    this.on("sending", function(file, xhr, formData) { 
     formData.append("_token", $('meta[name="csrf-token"]').attr('content')); 
    }); 
    this.on("success", function(file, res) { 
     console.log('upload success...'); 
     $('#img-thumb').attr('src', res.path); 
     $('input[name="logo"]').val(res.path); 
    }); 

    }, 
    error: function(file, response) { 
    console.log(response); 
    } 
}); 

ответ

0

Здесь вам нужно будет использовать jQuery. Поскольку вы используете валидацию Laravel, она вернется со статусом ошибки. Чтобы мы могли писать все необходимое в событии ошибки запроса AJAX, который вы делаете, т.е. здесь происходит инициализация dropzone. Образец кода будет как следующий,

success: function(file, response) { 
     $('.profile-image-wrapper').removeClass('has-error'); 
     $('.profile-image-error').html(''); 
    }, 
    error: function(file, response) { 
     var $message = response.errors.profilePhoto; 
     $('.profile-image-wrapper').addClass('has-error'); 
     $('.profile-image-error').html('<strong>' + $message + '</strong'); 
    }, 

Свойство «ParamName» для моей инициализации Dropzone является «profilePhoto». Таким образом, ошибка будет доступна в том же порядке.