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);
}

 

 

 

TAG •
  • profile
    언젠가는 php 8로 업그레이드 해야겠지만 사실 엄두가 안나긴 하더군요;;;; 지금 7.4에 머무르며 간신히 예전 위젯이나 레이아웃 들의 호환성을 유지하고 있긴 한데 php8로 업그레이드 하는 순간 엉망이 될것 이라는 불안감에;;;;;
  • profile
    type check 가 매우 엄격해졌어요