문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
tech:codeigniter:02.확장모듈:01.controller_가이드 [2019/01/09 18:47] endofsky 만듦 |
— (현재) | ||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ====== Controller 개발 규칙 ====== | ||
- | ===== 부모 Class ===== | ||
- | * 부모 클래스는 KTK_Controller 를 사용한다. | ||
- | * CI_Controller 사용 금지 | ||
- | <code php> | ||
- | class Main extends KTK_Controller { | ||
- | ... | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== 생성자 ===== | ||
- | * 생성자는 특별한 사유가 없는 한 parent 호출 필수 | ||
- | * 추가 모듈이 필요할 경우 parent 호출 후에 명시 | ||
- | |||
- | <code php> | ||
- | /** | ||
- | * 일반 생성자, 부모 클래스의 생성자를 우선 호출 후, | ||
- | * 해당 클래스의 생성자 역할을 진행하는것이 원칙! | ||
- | * 단, 특정 사유에 의해 부모 클래스의 생성자보다 우선적으로 호출해야 하는 라이브러리가 있는 경우 예외가 될 수 있다. | ||
- | **/ | ||
- | function __construct() { | ||
- | parent::__construct(); | ||
- | // 추가 모듈 작성 | ||
- | $this->load... | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== 모델 호출 ===== | ||
- | * 모델은 아래와 같은 방식으로 호출한다 | ||
- | * 해당 controller에서 범용적으로 호출이 필요할 경우 로드를 생성자에 선언하여 사용 가능하다. | ||
- | |||
- | ==== Method에서 선언 및 호출 ==== | ||
- | |||
- | <code php> | ||
- | // 모델 선언 | ||
- | $this->load->model('prototype_model'); | ||
- | | ||
- | // 모델의 특정 메소드를 호출하여 data배열에 저장 | ||
- | $data['someThing'] = $this->prototype_model->getSomeThing(); | ||
- | </code> | ||
- | |||
- | ==== 생성자에서 선언, Method에서 호출 ==== | ||
- | |||
- | <code php> | ||
- | /** | ||
- | * 모델을 선언하는 생성자 | ||
- | * 이런 식으로 선언 시 다른 method에서 중복 선언 할 필요가 없다 | ||
- | **/ | ||
- | function __construct() { | ||
- | parent::__construct(); | ||
- | // 모델 선언 | ||
- | $this->load->model('prototype_model'); | ||
- | } | ||
- | |||
- | /** | ||
- | * 생성자에서 선언한 모델을 호출하는 method | ||
- | **/ | ||
- | public function something() { | ||
- | // 모델의 특정 메소드를 호출하여 data배열에 저장 | ||
- | $data['someThing'] = $this->prototype_model->getSomeThing(); | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== 회사 코드 조회(comCd) ===== | ||
- | * 칸투칸에서는 여러 회사가 운영되고 있으며, 가장 대표적인 회사가 칸투칸(30)이다. | ||
- | * 보통 로그인 세션 등을 통해 회사 코드를 조회하고 있으며, controller에서는 회사코드를 조회할 수 있도록 공통코드를 제공하고 있다. | ||
- | |||
- | <code php> | ||
- | // comCd 얻어오기 (아래와 같이 contrller에서 별도 function 정의 없이 바로 사용 가능) | ||
- | $param['comCd'] = $this->getComCd(); | ||
- | </code> | ||
- | |||
- | ===== 뷰(View) 호출 ===== | ||
- | * 뷰는 아래와 같은 공통모듈을 통해 호출한다 | ||
- | |||
- | ==== 일반 페이지의 경우 ==== | ||
- | * 상단, 왼쪽 메뉴 / 하단 푸터 등이 들어가는 일반 페이지의 경우에는 pageView 메소드를 사용한다 | ||
- | |||
- | <code php> | ||
- | // 뷰 호출 : 일반 페이지일 경우 | ||
- | $this->pageView('/prototype/main_v', $data); | ||
- | </code> | ||
- | |||
- | ==== 독립 페이지의 경우 ==== | ||
- | * 팝업 페이지 등의 용도로 별도로 사용되는 페이지의 경우 simpleView 메소드를 사용한다 | ||
- | |||
- | <code php> | ||
- | // 뷰 호출 : 공통 header/footer 등 제외 | ||
- | $this->simpleView('/prototype/main_v', $data); | ||
- | </code> | ||
- | |||
- | ==== 페이지 없이 결과만 출력하는 경우 ==== | ||
- | * Ajax 통신과 같이 별도 뷰 페이지 없이 텍스트 혹은 json방식의 결과를 출력해야 하는 경우 | ||
- | |||
- | === json 포맷으로 노출하는 경우 === | ||
- | <code php> | ||
- | $dataArr = $this->common_model->doSimpleQueryArr(...); // 결과 수신 | ||
- | $this->jsonView($dataArr); // 화면 출력 | ||
- | </code> | ||
- | |||
- | === 단순 텍스트만 노출하는 경우 === | ||
- | <code php> | ||
- | $isSuccess = "true"; // 텍스트 값 할당 | ||
- | $this->stringView($isSuccess); // 화면 출력 | ||
- | </code> | ||
- | |||
- | ===== 간단 쿼리 호출 (commonModel) ===== | ||
- | 단순히 쿼리만 조회하여 결과값을 화면에 파싱하는 경우 Model 에 관련 method를 만들 경우 필요 없는 코드만 발생할 수 있다. \\ | ||
- | 그래서 이번 프로젝트에서는 commonModel을 통해 별도 business logic이 없는 경우 굳이 model 을 건드리지 않아도 되도록 쿼리 호출 공통함수를 제공한다. \\ | ||
- | 단, 이를 위해서는 쿼리는 queryparser에서 사용할 수 있도록 xml로 제작되어 있어야 한다. | ||
- | * [[10.kan_erp:03.프로그램_모듈:01.framework:04.간단쿼리실행_가이드|간단쿼리실행_가이드 참조]] | ||