fix: [employee] 부양가족 삭제가 서버에서 반영되지 않는 문제 수정

- hx-put → hx-post + _method=PUT (method spoofing) 변경
  서버 Nginx/PHP-FPM에서 PUT body 파싱 이슈 방지
- dependents_submitted 히든 마커 추가
  모든 부양가족 삭제 시 dependents 키가 폼에 없어도 서버에서 인식
- Controller에서 마커 확인 후 빈 배열로 처리하여 삭제 반영
This commit is contained in:
김보곤
2026-02-27 10:07:07 +09:00
parent c1b097b7fe
commit 3d295e1ca7
2 changed files with 9 additions and 1 deletions

View File

@@ -189,6 +189,11 @@ public function update(Request $request, int $id): JsonResponse
'dependents.*.is_dependent' => 'nullable|boolean',
]);
// 부양가족 섹션이 포함된 폼인데 dependents 데이터가 없으면 → 전체 삭제
if ($request->has('dependents_submitted') && ! array_key_exists('dependents', $validated)) {
$validated['dependents'] = [];
}
try {
$employee = $this->employeeService->updateEmployee($id, $validated);

View File

@@ -18,11 +18,12 @@
{{-- 수정 --}}
<div class="bg-white rounded-lg shadow-sm p-6">
<form id="employeeForm"
hx-put="{{ route('api.admin.hr.employees.update', $employee->id) }}"
hx-post="{{ route('api.admin.hr.employees.update', $employee->id) }}"
hx-headers='{"X-CSRF-TOKEN": "{{ csrf_token() }}", "Accept": "application/json"}'
hx-target="#form-message"
hx-swap="innerHTML"
class="space-y-6">
<input type="hidden" name="_method" value="PUT">
<div id="form-message"></div>
@@ -225,6 +226,8 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:rin
</div>
<div x-data="dependentsManager()">
{{-- 부양가족 전체 삭제 시에도 서버에 전달되도록 마커 --}}
<input type="hidden" name="dependents_submitted" value="1">
<template x-for="(dep, index) in dependents" :key="index">
<div class="border border-gray-200 rounded-lg p-4 mb-3 relative">
<button type="button" @click="removeDependent(index)"