@DeniSidorenko

Как для формы в контактах добавить загрузку файла, Opencart?

Добрый день, есть форма в контакте, как добавить поле с загрузкой файлов( изображений)
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
lazuren
@lazuren
Не знаю какая у вас версия OpenCart, но в третей версии можно сделать так.
в фале
catalog/view/theme/default/template/information/contact.twig

в нужном месте добавляете это код
<div class="form-group{% if option.required %} required {% endif %}">
            <label class="control-label">{{ option.name }}</label>
            <button type="button" id="button-upload{{ option.product_option_id }}" data-loading-text="{{ text_loading }}" class="btn btn-default btn-block"><i class="fa fa-upload"></i> {{ button_upload }}</button>
            <input type="hidden" name="option[{{ option.product_option_id }}]" value="" id="input-option{{ option.product_option_id }}" />
          </div>

JS в конце файла в теге <script></script>
$('button[id^=\'button-upload\']').on('click', function() {
    var node = this;

    $('#form-upload').remove();

    $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');

    $('#form-upload input[name=\'file\']').trigger('click');

    if (typeof timer != 'undefined') {
      clearInterval(timer);
    }

    timer = setInterval(function() {
      if ($('#form-upload input[name=\'file\']').val() != '') {
        clearInterval(timer);

        $.ajax({
          url: 'index.php?route=tool/upload',
          type: 'post',
          dataType: 'json',
          data: new FormData($('#form-upload')[0]),
          cache: false,
          contentType: false,
          processData: false,
          beforeSend: function() {
            $(node).button('loading');
          },
          complete: function() {
            $(node).button('reset');
          },
          success: function(json) {
            $('.text-danger').remove();

            if (json['error']) {
              $(node).parent().find('input').after('<div class="text-danger">' + json['error'] + '</div>');
            }

            if (json['success']) {
              alert(json['success']);

              $(node).parent().find('input').val(json['code']);
            }
          },
          error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
          }
        });
      }
    }, 500);
  });

Все загруженные файлы можно будет найти в Система->Обслуживание->Внешние загрузки
Важно: При использовании данного способа загруженные файлы будут обезличены и файл не прикрепится к сообщению из формы, а загрузится сразу.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы