service === null) { $this->service = service('inquiryservice'); } $this->addActionPaths('Inquiry'); } //Action작업관련 //기본 함수 작업 //Custom 추가 함수 public function create(): ResponseInterface { log_message('error', 'HIT InquiryController::create'); if (!$this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON([ 'ok' => false, 'message' => 'Invalid request' ]); } try { $formDatas = $this->request->getPost(); log_message('error', 'POST=' . json_encode($formDatas, JSON_UNESCAPED_UNICODE)); $entity = $this->service->create($formDatas); return $this->response->setStatusCode(201)->setJSON([ 'ok' => true, 'message' => '문의가 접수되었습니다.', 'data' => ['pk' => $entity->getPK()], ]); } catch (FormValidationException $e) { log_message('error', 'CAUGHT FormValidationException: ' . print_r($e->getErrors(), true)); return $this->response->setStatusCode(422)->setJSON([ 'ok' => false, 'message' => '입력값을 확인해 주세요.', 'errors' => $e->getErrors(), ]); } catch (\Throwable $e) { // ✅ 혹시 서비스에서 예외를 감싸버린 경우에도 에러를 최대한 복구 $errors = service('validation')->getErrors(); if (!empty($errors)) { log_message('error', 'FALLBACK validation errors: ' . print_r($errors, true)); return $this->response->setStatusCode(422)->setJSON([ 'ok' => false, 'message' => '입력값을 확인해 주세요.', 'errors' => $errors, ]); } log_message('error', '[AJAX create] ' . $e->getMessage()); return $this->response->setStatusCode(500)->setJSON([ 'ok' => false, 'message' => '처리 중 오류가 발생했습니다.', ]); } } }