From 8cfc44bf45ad4cd92fc5b15cd54e812abf359446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 14 Feb 2026 12:47:41 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=98=81=EC=97=85=ED=8C=8C=ED=8A=B8?= =?UTF-8?q?=EB=84=88=20=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20validatio?= =?UTF-8?q?n=20=EC=97=90=EB=9F=AC=20=ED=91=9C=EC=8B=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 폼을 AJAX 제출로 변경하여 422 에러 시 모달 내 에러 메시지 표시 - innerHTML로 로드된 script 태그 수동 실행 처리 - 컨트롤러에 JSON 응답 지원 추가 Co-Authored-By: Claude Opus 4.6 --- .../Sales/SalesManagerController.php | 4 + .../views/sales/managers/index.blade.php | 12 ++ .../managers/partials/edit-modal.blade.php | 184 ++++++++++++++---- 3 files changed, 159 insertions(+), 41 deletions(-) diff --git a/app/Http/Controllers/Sales/SalesManagerController.php b/app/Http/Controllers/Sales/SalesManagerController.php index fd8e5179..c936c9e6 100644 --- a/app/Http/Controllers/Sales/SalesManagerController.php +++ b/app/Http/Controllers/Sales/SalesManagerController.php @@ -211,6 +211,10 @@ public function update(Request $request, int $id) $this->service->updateSalesPartner($partner, $validated, $documents); + if ($request->expectsJson()) { + return response()->json(['success' => true, 'message' => '영업파트너 정보가 수정되었습니다.']); + } + return redirect()->route('sales.managers.index') ->with('success', '영업파트너 정보가 수정되었습니다.'); } diff --git a/resources/views/sales/managers/index.blade.php b/resources/views/sales/managers/index.blade.php index 5b3aee2c..cd3924da 100644 --- a/resources/views/sales/managers/index.blade.php +++ b/resources/views/sales/managers/index.blade.php @@ -256,6 +256,12 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none foc .then(response => response.text()) .then(html => { content.innerHTML = html; + // innerHTML로 삽입된 script 태그 수동 실행 + content.querySelectorAll('script').forEach(oldScript => { + const newScript = document.createElement('script'); + newScript.textContent = oldScript.textContent; + oldScript.parentNode.replaceChild(newScript, oldScript); + }); }) .catch(error => { content.innerHTML = ` @@ -297,6 +303,12 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none foc .then(response => response.text()) .then(html => { content.innerHTML = html; + // innerHTML로 삽입된 script 태그 수동 실행 + content.querySelectorAll('script').forEach(oldScript => { + const newScript = document.createElement('script'); + newScript.textContent = oldScript.textContent; + oldScript.parentNode.replaceChild(newScript, oldScript); + }); }) .catch(error => { content.innerHTML = ` diff --git a/resources/views/sales/managers/partials/edit-modal.blade.php b/resources/views/sales/managers/partials/edit-modal.blade.php index e9186a9f..05980ac6 100644 --- a/resources/views/sales/managers/partials/edit-modal.blade.php +++ b/resources/views/sales/managers/partials/edit-modal.blade.php @@ -13,8 +13,19 @@ + + + -
+ @csrf @method('PUT') @@ -165,7 +176,7 @@ class="mt-3 text-sm text-blue-600 hover:text-blue-800 flex items-center gap-1"> class="px-4 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition text-sm"> 취소 - @@ -174,46 +185,137 @@ class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition