content_title = lang("{$this->getService()->getClassName()}.title"); $this->class_path .= $this->getService()->getClassName(); $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; $this->_db = \Config\Database::connect(); } final public function getService(): UserService { if (!$this->_service) { $this->_service = new UserService(); } return $this->_service; } //Index,FieldForm관련 protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string { switch ($this->getService()->getAction()) { case 'profile_modify_form': $this->service = $this->getService(); $this->control = $this->getService()->getControlDatas(); $this->getService()->getHelper()->setViewDatas($this->getViewDatas()); $actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate; if ($actionTemplate) { $view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . 'modify_form'; } else { $view_file = $this->view_path . 'modify_form'; } $result = view($view_file, ['viewDatas' => $this->getViewDatas()]); break; case 'profile_modify': $this->getMyLogService()->save($this->getService()->getClassName(), $this->getService()->getAction(), $message, $this->getMyAuth()->getUIDByAuthInfo()); $result = $this->view($this->entity->getPK()); break; default: $result = parent::getResultSuccess($message, $actionTemplate); break; } return $result; } protected function doValidation(Validation $validation, string $field, string $rule): Validation { switch ($field) { case 'role': //아래 Rule Array는 필드명.* checkbox를 사용 $validation->setRule("{$field}.*", $field, $rule); break; default: $validation = parent::doValidation($validation, $field, $rule); break; } return $validation; } //Index,FieldForm관련. final public function profile_form(mixed $uid): RedirectResponse|string { try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); $this->getService()->setFormOptions(); //기본값정의 $this->setFormDatas($this->request->getGet()); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $this->entity = $entity; helper(['form']); $this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []]; return $this->getResultSuccess(); } catch (\Exception $e) { return $this->getResultFail($e->getMessage()); } } final public function profile(int $uid): RedirectResponse|string { //Transaction Start $db = \Config\Database::connect(); $this->_db->transStart(); try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); //전달값정의 $this->setFormDatas($this->request->getPost()); $this->doValidations(); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $this->entity = $this->modify_process($entity, $this->getFormDatas()); $this->_db->transCommit(); return $this->getResultSuccess(); } catch (\Exception $e) { $this->_db->transRollback(); return $this->getResultFail($e->getMessage()); } } }