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
This commit is contained in:
@@ -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 [];
|
||||
|
||||
Reference in New Issue
Block a user