@props([ 'name', // 필수: 슬롯 키 / 선택자 (예: logo, banner, og_image, thumbnail) 'label' => '이미지', // 라벨 텍스트 'model' => null, // Eloquent 모델 인스턴스 (수정 시: $shop, $program 등) 'width' => 60, // 미리보기 가로 크기(px) 'height' => 60, // 미리보기 세로 크기(px) 'ratioText' => '권장 비율: 1:1', // 가이드 텍스트 'required' => false ]) @php $slotKey = $name; $inputId = "{$slotKey}_image_id"; $previewId = "{$slotKey}-preview"; $removeBtnId = "btn-remove-{$slotKey}"; // 🌟 본사 관리자 전용 라우트 고정 주입 $adminUploadRoute = '/admin/images'; $adminIndexRoute = '/admin/images/list'; $adminFolderRoute = '/admin/image-folders'; // M:N 다형성 피벗 이미지 객체 우선 확보 $slotImage = ($model && method_exists($model, 'getSlotImage')) ? $model->getSlotImage($slotKey) : null; // 히든 인풋 전송용 이미지 ID 추출 $currentImageId = old($inputId); if ($currentImageId === null && $model) { if ($slotImage) { $currentImageId = $slotImage->id; } else { $legacyColumn = "{$slotKey}_path"; if (!empty($model->{$legacyColumn})) { $legacyImg = \App\Models\Image::where('path', $model->{$legacyColumn})->first(); $currentImageId = $legacyImg?->id; } } } // 미리보기 이미지 URL 추출 $previewUrl = null; if ($slotImage) { $previewUrl = $slotImage->thumb_url ?: asset('storage/' . $slotImage->path); } elseif ($model) { $legacyColumn = "{$slotKey}_path"; if (!empty($model->{$legacyColumn})) { $previewUrl = asset('storage/' . $model->{$legacyColumn}); } } @endphp