fix: [employee] 부양가족 삭제가 서버에서 반영되지 않는 문제 수정
- hx-put → hx-post + _method=PUT (method spoofing) 변경 서버 Nginx/PHP-FPM에서 PUT body 파싱 이슈 방지 - dependents_submitted 히든 마커 추가 모든 부양가족 삭제 시 dependents 키가 폼에 없어도 서버에서 인식 - Controller에서 마커 확인 후 빈 배열로 처리하여 삭제 반영
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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)"
|
||||
|
||||
Reference in New Issue
Block a user