Extra Form
PHP PHP 7.2
CMS XpressEngine

마켓플레이스 모듈을 사용하고 있습니다.

보고된 이슈가 XE1.11.1에서 글등록이 안된다는 이슈입니다.

직접 해보니깐 글등록은 되는데 파일 업로드가 안되네요.

 

modules/marketplace/ruleset/insertItem.xml

modules/marketplace/ruleset/insertItemServer.xml

 

<field name="thumbnail" required="true">

xml 보니깐 thumbnail 이 필수구요.

이걸 지우면 글 등록은 됩니다. 다만 대표사진이 없이 올라가겠죠.

 

그러면 직접 글작성 코드를 살펴보면 다음과 같습니다.

<input name="thumbnail[0]" class="insertImage"  type="file" size="1" />

insertImage 라는 클래스를 이용하네요.

 

modules/marketplace/skins/emmpFlea/marketplace.default.js

$(".insertImage").change(function(){
   var ext = $(this).val().split('.').pop().toLowerCase();
   if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
      alert('이미지 형식만 업로드하실 수 있습니다.');
      this.value = '';
      $(this).parent().find('.preview').hide();
      $(this).parent().find('.mp-no-image').show();
   }
   else
   {
      cropPreviewImage(this);
   }

});

문제가 되는 부분이 이거입니다.

이게 제대로 동작을 안하고 있습니다. -_-;;;

흠.... 뭐시기를 고쳐야 할까요..


이미지를 올리면 cropPreviewImage(this); 가 실행이 되네요.해당 함수는 다음과 같습니다.

function cropPreviewImage(input) {
   if (input.files && input.files[0]) {
      var reader = new FileReader();

      var width = $(input).parent().width();
      var height = $(input).parent().height();
      var rate = width/height;

      reader.onload = function (e) {
         var image = new Image();
         image.src = e.target.result;
         image.onload = function() {
            if( rate > this.width/this.height)
               $(input).parent().find('.preview').width(width);
            else
               $(input).parent().find('.preview').height(height);
         };

         $(input).parent().find('.preview').attr('src', e.target.result).show();
         $(input).parent().find('.mp-no-image').hide();
      }
      reader.readAsDataURL(input.files[0]);
   }
}

파일 업로드를 제대로 못하는게 문제인데 저게 파일 업로드가 맞는지 모르겠네요


보니깐 js에서는 단순히 프리뷰 정도만 해주고 실제 썸네일 업로드는 모듈 php 단에서 동작하는 거 같습니다.

modules/marketplace/marketplace.controller.php

modules/marketplace/marketplace.item.php

 

https://github.com/hellojo011/marketplace_XE

php7.2 버전에서 동작되도록 수정한 버전이라는데, 이것도 마찬가지로 안되네요.

xe최신버전에서 뭐가 달라졌는지 모르겠네요.

 

Fatal error: Uncaught Error: Call to undefined method marketplaceItem::getThumbnailsObject() in D:\Web\eond\www\classes\template\TemplateHandler.class.php(420) : eval()'d code:53 Stack trace: #0 D:\Web\eond\www\classes\template\TemplateHandler.class.php(420): eval() #1 D:\Web\eond\www\classes\template\TemplateHandler.class.php(197): TemplateHandler->_fetch('file://D:/Web/e...') #2 D:\Web\eond\www\classes\template\TemplateHandler.class.php(420) : eval()'d code(12): TemplateHandler->compile('modules/marketp...', '_read.html') #3 D:\Web\eond\www\classes\template\TemplateHandler.class.php(420): eval() #4 D:\Web\eond\www\classes\template\TemplateHandler.class.php(197): TemplateHandler->_fetch('file://D:/Web/e...') #5 D:\Web\eond\www\classes\display\HTMLDisplayHandler.php(61): TemplateHandler->compile('./modules/marke...', 'list.html') #6 D:\Web\eond\www\classes\display\DisplayHandler.class.php(64): HTMLDisplayHandler->toDoc(Object(marketplaceView)) #7 D:\Web\eond\www\classes\module\ModuleHandler.class.php(1147): DisplayHandler in D:\Web\eond\www\classes\template\TemplateHandler.class.php(420) : eval()'d code on line 53

 

이미지 1개를 올릴 땐 대표 사진 값은 필수입니다. 라고 뜨고

4개 다 올리면 이런 오류가 뜨네요

(아! 이 오류는 저 깃헙 자료 다운받아서 그렇네요. 이건 취소)


썸네일을 1~3개 올릴 땐 대표사진이 필요하다고 나오는데 4개 다 올리면 업로드가 잘 되네요.

순서도 4,3,2,1 이렇게 올리면 업로드는 되지만 썸네일 선택이 안되고;

1.2.3.4 이 순서로 다 올려야 정상적으로 보여지네요.

 

https://eond.com/eondFlea

id : [email protected]

pw : test

  • ?
    제 경우는 말씀하신 문제가 됐다가 안 됐다가 그러네요. 제가 php 버전을 바꿔서 그런지는 모르겠습니다. 그 증상이 있을 때 눈여겨서 보지를 못했네요.

    현재 php 7.1 라이믹스 사용중인데 지금은 문제가 없습니다. 등록된 상품을 보려고 누르면 시간이 엄청나게 걸리는 고질적인 이슈가 있었는데 그것도 지금은 없어졌구요. 뭔가 믿고 쓰기엔 불안한 면이 있어서 그냥 방치해 두고 있습니다.
  • ?
    1.11.0 에서는 문제가 없나요?
  • ?

    권한관리에서 글쓰기를 로그인 사용자로 선택하고 해보셨나요? 글쓰기 권한설정을구분해서 해보세요