디버깅 조금씩 배워보려고 하는 초보입니다. 소소한 거라도 도움주시면 감사하겠습니다.

 

1. marketplace 모듈 글 등록하니 "대상을 찾을 수 없습니다"오류 뜨고 아래 오류도 출력하고 썸네일이 나오지 않습니다.

글등록은 됩니다.

 

Error #0 "Call to a member function getItemCondition() on null" in modules/marketplace/skins/default/list.html on line 176

 

1.png.jpg

 

2. 아래 list.html을 보니 getItemCondition()은 176줄에는 없고 182줄에 있는 데 왜그런가요?

그리고,오류 내용이 나오게 하려면 어느부분에 어떤 명령어를 넣어보면 될까요?

 

<!-- 목록 출력 (조건. 글 있을 때) -->
            <tbody cond="$marketitem_list || $notice_list">
                <!-- 공지사항 리스트 -->
                <tr class="bd_notice" loop="$notice_list=>$no,$document">
                <td colspan="3"><div class="ta_l bd_tit notice_check"><a href="{getUrl('document_srl',$document->document_srl, 'listStyle', $listStyle, 'cpage','')}"><span class="badge">장터공지</span> {$document->getTitle()}</a></div></td>
                <td><div class="ta_c">{$document->get('readed_count')>0?$document->get('readed_count'):'0'}</div></td>
<td cond="$grant->manager" class="ta_c"><input type="checkbox" name="cart" value="{$document->document_srl}" class="iCheck" title="Check This Article" onclick="doAddDocumentCart(this)" checked="checked"|cond="$document->isCarted()" /></td>
                </tr>
                <!-- 리스트  -->           
                <tr loop="$marketitem_list=>$no,$document">
                <td class="bd_thmb">
<div style="position:relative">
<span class="mp-condition-badge mp-condition-badge-small mp-{$document->getItemCondition()}">{$condition_list[$document->getItemCondition()]->short_name}</span>
<a href="{getUrl('document_srl',$document->document_srl, 'listStyle', $listStyle, 'cpage','')}" class="soldout"|cond="$document->isSoldout()">
                    <img src="{$document->getThumbnail(118,77)}" />
</a>
</div>
                </td>

 

PS) 이 오류 이전에 글등록 아예 안되는 문제 아래와 같이 해결함.

1) 아래 참조하여 FileHandler.class.php 문법 marketplace.item.php에 일치시킴.

marketplace_imagedestroy-1.png

 

2) https://xetown.com/questions/1090405 이 글 참조하여 marketplace.item.php 소스의 클래스명과 함수명을 다르게 수정함.

function testmarketplaceItem($document_srl = 0, $load_extra_vars = true, $columnList = array())

 

3) log file(apach,php,files/debug)과 개발자 도구엔 오류 내용이 없는 상태입니다.

 

  • profile

    1. 템플릿파일 (html)파일의 줄수(라인)이 아닌 템플릿파일을 php파일로 컴파일한 해당 파일의 기준으로 라인수가 표기되므로 176번째줄이 아닌 템플릿 파일에서 해당 함수를 호출하는 182번째줄의 코드가 맞습니다. 템플릿 파일의 경우 해당 템플릿 파일을 참고만 할뿐이기에 해당 템플릿의 라인수가 항상 다를 수 있다고 생각하시는게 편하십니다.

    2. 해당 공지사항에서 가져온 $document 자체가 어디에서 가공되었는지 view파일을 보셔야 할것 같은데.. 실제로 document 같은 변수명은 modules/document/document.item.php 파일을 오브젝트 클래스로 가지고 호출하는 경우가 많을 수 있습니다.

    해당 실제로 document 변수를 실제로 위처럼 document item 으로 가지고 오고 있다면.. getItemCondition함수가 존재하지 않으므로 정상적으로 오류가 뜨는 것일겁니다.

    document 의 변수 또는 마켓플레이스의 실제 호출하는 오브젝트 클래스를 찾아, 해당 클래스로 연결해주는 방식으로 코드를 구현되어야 할 것 같습니다.

     

    코드 확인해보니 해당 notice 공지항목에는 documentItem 을 가져오고 있으므로 해당 오류나는 코드가 호출하는 함수 부분만 "삭제"처리 하시면 될 것 같네요.

     

    해당 기능은 필요가 없거든요..ㅎㅎ

  • profile profile
    아 너무 감사드립니다 초보에겐 좀 어려운 부분이지만 음미하고 찾아보고 공부해볼게요 람보님 새해 복 많이 받으시고 건강과 행복이 늘 함께 하시길 바랍니다