레이아웃에서 특정 게시판 카테고리 목록을 불러오려고 하는데 안되네요.
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.1 |
특정 게시판 카테고리 목록만 뽑고 싶어서 소스를 뒤져보니 getCategoryList라는 함수가 있길래 그걸 썼더니 안 되네요.
소스는 다음과 같습니다.
{@
$list = executeQuery('document.getCategoryList', '113')->data;
print_r($list);
}
$list = executeQuery('document.getCategoryList', '113')->data;
print_r($list);
}
(113이 게시판 번호(module_srl)입니다.)
위 소스를 layout.html 중간쯤에 넣었습니다.
결과를 print_r로 출력하려고 봤더니 아무것도 안 나오네요. (rx_document_categories 테이블에는 module_srl이 113으로 등록된 카테고리가 있습니다.)
제가 뭘 잘못한 걸까요? 아니면 다른 방법이 있는지 알고 싶습니다.
댓글 4
{@
$args = new stdClass;
$args->module_srl = '113';
$list = executeQuery('document.getCategoryList', $args)->data;
print_r($list);
}
호출하는 쿼리의 condition 값이 var가 module_srl 이고, 실제로 해당 값을 넣을때 var키값을 포함한 "오브젝트" 형식으로 만들어서 변수를 넘겨야 합니다.
그대로 하니 됐습니다! 정말 감사합니다. 큰 도움이 되었습니다. 오브젝트 형식으로 넣어야 되는 줄은 몰랐네요.
라이믹스라면 간단한 쿼리는 $args를 만들지 않고 배열을 써도 됩니다.
$list = executeQueryArray('document.getCategoryList', ['module_srl' => 113])->data;
executeQuery는 카테고리가 1개밖에 없을 경우 배열이 아니라 오브젝트로 나오고, 0개라면 그냥 null이 되어 버리기 때문에 카테고리 목록을 처리하는 부분에서 오류를 유발할 수 있습니다. 특히 PHP 8은 자료형 구분이나 null 처리에 무척 민감하죠. 만약 foreach 같은 루프 문법을 사용하실 예정이라면, 결과가 항상 배열로 나오는 executeQueryArray를 사용하는 것이 안전합니다.