발생한 에러

Error #0 "Call to a member function get() on null" in layouts/el_basic2/layout.html on line 770


기존코드

{@                                    $args = new stdClass();                                    $args->order_type = "asc";                                    $args->list_count = 5;                                    $args->member_srl = $logged_info->member_srl;                                    $oDocumentModel = &getModel('document');                                    $output = $oDocumentModel->getDocumentList($args);                                    }                                    <ul cond="$output->data">                                        <li loop="$output->data=>$key,$val">                                            <a href="{getUrl('', 'mid', $val->get('module_srl'), 'document_srl', $val->get('document_srl'))}">                                                <span class="title">{$val->get('title')?$val->get('title'):$oDocument->get('title')}</span>                                                <span class="date">{$val->get('regdate')?zDate($val->get('regdate'), "Y-m-d"):zDate($oDocument->get('regdate'), "Y-m-d")}</span>                                            </a>                                        </li>                                    </ul>



변경된 코드


{@

$args = new stdClass();

$args->order_type = "asc";

$args->list_count = 5;

$args->member_srl = $logged_info->member_srl;

$oDocumentModel = &getModel('document');

$output = $oDocumentModel->getDocumentList($args);

}

<ul cond="$output && $output->data">

    <li loop="$output->data=>$key,$val" cond="$val">

        {@ $oDocument = $oDocumentModel->getDocument($val->get('document_srl')); }

        <a href="{getUrl('', 'mid', $val->get('module_srl'), 'document_srl', $val->get('document_srl'))}">

            <span class="title">{$val->get('title') ?: ($oDocument ? $oDocument->get('title') : '제목 없음')}</span>

            <span class="date">{$val->get('regdate') ? zDate($val->get('regdate'), "Y-m-d") : ($oDocument ? zDate($oDocument->get('regdate'), "Y-m-d") : '')}</span>

        </a>

    </li>

</ul>


문제 원인

$oDocument 변수가 정의되지 않음

$oDocument->get('title')을 사용하려면 $oDocument 변수가 정의되어 있어야 함.


해결 방법

$oDocument 변수를 할당하는 코드가 없으므로 getDocument($val->get('document_srl'))로 가져와야 함.

$oDocument = $oDocumentModel->getDocument($val->get('document_srl'));

또는 oDocument 부분을 제거하고 $val->get('title')만 사용.


수정 사항 요약

  1. $output->data가 null인지 확인 (cond="$output && $output->data")
  2. loop 내부에서 $val이 null인지 확인 (cond="$val")
  3. $oDocument 변수를 getDocument()로 가져옴
  4. null 체크 후 기본값 설정 ('제목 없음' 추가)