_model = new CategoryModel(); parent::initController($request, $response, $logger); $this->_viewPath .= strtolower($this->_model->getClassName()); } public function getFields(string $action = ""): array { $fields = [ 'name', "linkurl", "photo", "isaccess", "isread", "iswrite", "isreply", "isupload", "isdownload", "status", "head", "tail", ]; switch ($action) { case "index": case "excel": return [ 'name', "linkurl", "isaccess", "isread", "iswrite", "isreply", "isupload", "isdownload", "status", "created_at" ]; break; case "view": return [...$fields, "updated_at", "created_at"]; break; default: return $fields; break; } } public function getFieldFilters(): array { return ["isaccess", "isread", "iswrite", "isreply", "isupload", "isdownload", "status"]; } public function getFieldBatchFilters(): array { return parent::getFieldBatchFilters(); } //Field별 Form Datas 처리용 protected function getFieldFormData(string $field, $entity = null): array { switch ($field) { case 'photo': $file = $this->upload_image_procedure($field); if (!is_null($file)) { $this->_viewDatas['fieldDatas'][$field] = $file; } break; default: return parent::getFieldFormData($field, $entity); break; } return $this->_viewDatas['fieldDatas']; } private function write_leftmenu($old_category, array $categorys) { //신규 대분류인경우 기존 카테고리 메뉴 만들기 // $categorys = array_reverse($categorys); //중분류의 경우 나중에 넣은것이 먼저되므로 reverse해서 처리 foreach ($categorys as $category) { $viewDatas = [ 'className' => $this->_model->getClassName(), 'category' => $category, 'parent_category' => $old_category, 'sibling_categorys' => $categorys ]; $leftmenu = view($this->_viewPath . '/leftmenu_template', ['viewDatas' => $viewDatas]); file_put_contents(APPPATH . 'Views' . "/layouts/front/left_menu/leftmenu_{$category->getPrimaryKey()}.php", $leftmenu); } } private function build_leftmenu() { $old_category = null; $categorys = array(); foreach ($this->_model->getEntitys(['status' => DEFAULTS['STATUS']]) as $entity) { if ($entity->getHierarchy_Depth() == 1) { if (is_null($old_category)) { $old_category = $entity; } else if ($old_category->getPrimaryKey() != $entity->getPrimaryKey()) { $this->write_leftmenu($old_category, $categorys); $old_category = $entity; $categorys = array(); } } else { array_push($categorys, $entity); } } $this->write_leftmenu($old_category, $categorys); } //Insert관련 protected function insert_process() { $entity = parent::insert_process(); $this->build_leftmenu(); return $entity; } //Update관련 protected function update_process($entity) { $entity = parent::update_process($entity); $this->build_leftmenu(); return $entity; } //Reply관련 protected function reply_process($entity) { $entity = parent::reply_process($entity); $this->build_leftmenu(); return $entity; } //Delete 관련 protected function delete_process($entity) { $entity = parent::delete_process($entity); $this->build_leftmenu(); return $entity; } }