어제 질문에 포함된 내용이긴 하지만 일단 비로그인시 리턴시키고 등등해서 조치는 했습니다만 궁금증이 계속 남습니다.
if($addon_info->alert_writer == 'Y' && Context::get ('logged_info')->member_srl == $oDocument->get ('member_srl')){
실행내용
}
제가 아무리 봐도 위 내용은 비로그인 방문자에게는 실행이 되서는 안될 듯 한데 비로그인시에는 실행이 되어 버립니다.
단,목록에서 실행이 되어버립니다....
아... 글 쓰면서 지금 생각이 났네요... $oDocument 이게 글 목록에서 가져올 수 없는 거군요,,
그럼 어제 목록에서 애드온이 동작되지 않도록 조치한게 제대로 한거 같네요. 비로그인자도 리턴시킨것도 맞는 조치 같구요...
어라.. 다시 생각하니 로그인 회원은 왜 그럼 이상이 없지요 ?? 이상하다.... 로그인 회원은 목록에서도 이상없이 실행이 안되었네요.
다른 애드온에서 $oDocument를 선언하고 있는 게 아닐까요? 애드온에서 흔히 쓰는 변수명이라...
if($addon_info->alert_writer == 'Y' && Context::get('oDocument') && Context::get('oDocument')->get('member_srl') == Context::get ('logged_info')->member_srl) {
실행내용
}
이렇게 로컬 변수에 의존하지 말고 Context에서 직접 뽑아오도록 해보세요.
Context::get('oDocument')가 존재하는지 한 번 더 체크해야 하는 이유는, 이게 없으면 그 다음에 ->get('member_srl')에서 get 함수가 존재하지 않는다며 치명적인 오류가 발생하기 때문입니다.