From 7580c31ab07d2ced00e40d18fd33204bfcdb17be Mon Sep 17 00:00:00 2001 From: taekyoungc Date: Wed, 8 Apr 2026 17:31:55 +0900 Subject: [PATCH] fix: restore site nav rendering with menu type fallback Fallback to legacy site mt_idx=4 when site menu type mapping is inconsistent or missing so top navigation renders on trash.wxn.co.kr. Made-with: Cursor --- app/Helpers/admin_helper.php | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/app/Helpers/admin_helper.php b/app/Helpers/admin_helper.php index 516a411..fd09a53 100644 --- a/app/Helpers/admin_helper.php +++ b/app/Helpers/admin_helper.php @@ -151,17 +151,30 @@ if (! function_exists('get_site_nav_tree')) { { try { $lgIdx = resolve_site_menu_lg_idx(); - $typeRow = model(\App\Models\MenuTypeModel::class)->getByCode('site'); - if (! $typeRow) { - return []; - } $mbLevel = (int) session()->get('mb_level'); $menuModel = model(\App\Models\MenuModel::class); - $flat = $menuModel->getVisibleByLevel((int) $typeRow->mt_idx, $mbLevel, (int) $lgIdx); + $typeRow = model(\App\Models\MenuTypeModel::class)->getByCode('site'); + $siteMtIdx = $typeRow ? (int) $typeRow->mt_idx : 0; + if ($siteMtIdx <= 0) { + // 운영 DB 불일치 대비: menu_type 누락 시 legacy site mt_idx(4)로 시도 + $siteMtIdx = 4; + } + + $flat = $menuModel->getVisibleByLevel($siteMtIdx, $mbLevel, (int) $lgIdx); // 현재 지자체에 site 메뉴가 없으면, 기본 지자체(1)의 메뉴를 한 번 복사한 뒤 다시 시도 if (empty($flat)) { - $menuModel->copyDefaultsFromLg((int) $typeRow->mt_idx, 1, (int) $lgIdx); - $flat = $menuModel->getVisibleByLevel((int) $typeRow->mt_idx, $mbLevel, (int) $lgIdx); + $menuModel->copyDefaultsFromLg($siteMtIdx, 1, (int) $lgIdx); + $flat = $menuModel->getVisibleByLevel($siteMtIdx, $mbLevel, (int) $lgIdx); + } + + // site 타입 매핑 불일치(예: menu_type=2, menu 데이터=4) 보정 + if (empty($flat) && $siteMtIdx !== 4) { + $legacyMtIdx = 4; + $flat = $menuModel->getVisibleByLevel($legacyMtIdx, $mbLevel, (int) $lgIdx); + if (empty($flat)) { + $menuModel->copyDefaultsFromLg($legacyMtIdx, 1, (int) $lgIdx); + $flat = $menuModel->getVisibleByLevel($legacyMtIdx, $mbLevel, (int) $lgIdx); + } } if (empty($flat)) { return [];