PHP8 이상에서 발견된 썸띵모듈 에러과 수정방법을 이번에 새로 발견된 에러 해결방법과 함께 이전에 작성된 https://xetown.com/tips/1785303 의 내용도 이 게시글에 포함하여 추후 에러 재발견시 이 게시글을 업데이트 하도록 하겠습니다.
1.썸띵모듈 설정페이지 진입시 에러
에러메세지:
-------------
서버 오류
TypeError #0 "in_array(): Argument #2 ($haystack) must be of type array, string given" in modules/something/tpl/config.html on line 137
common/framework/debug.php:681
-------------
something.admin.controller.php 18행 부근
if (count($obj->group) == 0) 이라는 구문을 if (isset($obj->group)) 로 수정
something/tpl/config.html 131행 부근
<label for="grp_{htmlspecialchars($key)}" class="mgr14"><input type="checkbox" name="group[]" value="{$val->group_srl}" id="grp_{htmlspecialchars($key)}" checked|cond="in_array($val->group_srl, $config->group) "> {$val->title}</label>
위 부분을 다음과 같이 수정
<label for="grp_{htmlspecialchars($key)}" class="mgr14"><input type="checkbox" name="group[]" value="{$val->group_srl}" id="grp_{htmlspecialchars($key)}" checked|cond="is_array($config->group) && in_array($val->group_srl, $config->group)"> {$val->title}</label>
2.썸띵모듈 데이터 설정에서 추출할 게시판 설정후 회원썸띵페이지 방문시 에러
에러메세지:
-------------
서버 오류
TypeError #0 "implode(): Argument #2 ($array) must be of type ?array, string given" in modules/something/something.model.php on line 362 Message Location : modules/something/something.model.php:362
-------------
something.model.php 32행 부근
$board_srls = null; if (count($config->board_module_srls) > 0) { $board_srls = implode($config->board_module_srls, ","); }
위 이부분을 다음과 같이 수정
$board_srls = null; $config = $this->getConfig(); if (is_array($config->board_module_srls) && count($config->board_module_srls) > 0) { $board_srls = implode(",", $config->board_module_srls); }
something.model.php 102행 부근
if (count($config->board_module_srls) > 0) { $board_srls = implode($config->board_module_srls, ","); }
위 이부분을 다음과 같이 수정
if (is_array($config->board_module_srls) && count($config->board_module_srls) > 0) { $board_srls = implode(",", $config->board_module_srls); }
something.model.php 362행 부근
if (count($config->board_module_srls) > 0) { $board_srls = implode($config->board_module_srls, ","); }
위 부분을 다음과 같이 수정
if (is_array($config->board_module_srls) && count($config->board_module_srls) > 0) { $board_srls = implode(",", $config->board_module_srls); }