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; } public function getService(): ServiceItemService { if (!$this->_service) { $this->_service = new ServiceItemService($this->request); } return $this->_service; } public function getHelper(): ServiceItemHelper { if (!$this->_helper) { $this->_helper = new ServiceItemHelper($this->request); } return $this->_helper; } public function getServiceService(): ServiceService { if (!$this->_serviceService) { $this->_serviceService = new ServiceService($this->request); } return $this->_serviceService; } protected function getFormFieldOption(string $field, array $options = []): array { switch ($field) { case 'serviceinfo_uid': $temps = []; foreach ($this->getServiceService()->getEntities() as $entity) { $temps[$entity->getPK()] = $entity->getTitle(); } $options[$field] = $temps; break; case 'item_uid': $temps = []; $item_type = $this->request->getVar('item_type'); if (!$item_type) { throw new \Exception(__FUNCTION__ . "에서 item_type이 지정되지 않았습니다."); } // throw new \Exception(__FUNCTION__ . "에서 item_type이 지정되지 않았습니다.->{$item_type}"); foreach ($this->getEquipmentService($item_type)->getEntities() as $entity) { $temps[$entity->getPK()] = $entity->getTitle(); } $options[$field] = $temps; break; default: $options = parent::getFormFieldOption($field, $options); break; } return $options; } protected function getResultPageByActon(string $action, string $message = MESSAGES["SUCCESS"]): RedirectResponse|string { switch ($action) { case 'index': $this->getHelper()->setViewDatas($this->getViewDatas()); $result = view($this->view_path . 'popup' . DIRECTORY_SEPARATOR . $action, ['viewDatas' => $this->getViewDatas()]); break; default: $result = parent::getResultPageByActon($action, $message); break; } return $result; } //Index,FieldForm관련 protected function create_process(string $action, array $fields, array $formDatas = []): mixed { $this->field_rules = $this->getFieldRules($action, $fields); //데이터 검증 $validatedFormDatas = $this->doValidate($action, $fields, $formDatas); //도메인의 경우 domaininfo에 등록 후 ItemEntity의 item_uid에 넣어줘야함 if ($validatedFormDatas['item_type'] === 'DOMAIN') { $serviceEntity = $this->getServiceService()->getEntity($validatedFormDatas['serviceinfo_uid']); $tempDatas = ['clientinfo_uid' => $serviceEntity->getClientInfoUID(), 'domain' => $validatedFormDatas['item_uid']]; $equipmentEntity = $this->getEquipmentService($validatedFormDatas['item_type'])->create($tempDatas); //도메인용 항목의 item_uid로 전달함 $validatedFormDatas['item_uid'] = $equipmentEntity->getPK(); } return $this->getService()->create($validatedFormDatas); } }