application 디렉토리 하단의 controllers 디렉토리가 컨트롤의 역할을, views 디렉토리는 뷰의 역할을, models 디렉토리는 모델의 역할을 한다.
서브 디렉토리 형태로 사용할 수 있으며, 기능별 혹은 프로그램 그룹별로 디렉토리를 나누어 이용할 수 있다.
(예 http://localhost/index.php/blog/ -> 블로그, http://localhost/index.php/blog/index 도 동일한 결과이다
기본이 되는 index 함수는 생략가능. 그러나 index 뒤에 인자를 준다면 써줘야 한다)
컨트롤의 경우에는 디렉토리를 나누지 않고 controllers 디렉토리에 위치시키는 것도 괜찮다.
작업해보니 각 프로그램 그룹별(블로그, 포토갤러리 등) 컨트롤 프로그램은 1개, 혹은 2개 정도였고
많더라도 대여섯개 정도인데 굳이 디렉토리를 나눌 필요까지는 없을 듯 하다. (나눠도 상관은 없다. ^^;)
모델과 뷰의 경우에는 꼭 컨트롤과 짝이 되는 모델과 뷰를 사용하지 않아도 된다.
위 그림의 예에서 보면 컨트롤에서
자주 쓰는 공통 기능은 공통 모델파일로 따로 만들어놓는 것이 편하다.
컨트롤에서 모델에서 데이터를 가져오고(혹은 가공하고) 뷰로 넘길때는 배열형태로 넘긴다.
$data[‘page_title‘] = ‘Your title‘;
$this->load->model(‘blog_model‘); // 모델을 선언
$this->load->view(‘common/top’); // 뷰 파일 선언. 데이터 넘길 필요가 없는 경우
$data[‘query’] = $this->blog_model->get_last_ten_entries(); // 모델에서 데이터를 가져옴(배열)
$this->load->view(‘blogview‘, $data); // blogview.php 뷰파일을 로딩한다.
// $data변수로 배열을 넘김
// 뷰파일에서는 첫줄 $data[‘page_title‘]의 경우에는
// $page_title 로 사용한다.
// $data[‘query’]는 배열로 넘긴것이라 foreach를 이용
통 프레임의 경우 상하단 include 시키는 파일은 컨트롤에서 위의 예문처럼 선언하거나
뷰파일 상단에 <? echo $this->load->view(‘top’); ?> 이렇게 선언해도 된다.