제목 | controllers 하위폴더 생성 | ||
---|---|---|---|
글쓴이 | 앤드그리고 | 작성시각 | 2009/10/01 11:03:02 |
|
|||
안녕하세요. ci 묻고 답하기에 controllers 하위폴더 생성에 대해서 질문이 올라왔는데요, 거기에 댓글로 답변을 달았는데 여기에도 같이 올려요~ 기본적으로 ci에서 controller에 하위폴더를 하나까지 만들 수 있는데요... 하위폴더 아래에 하위폴더를 더 추가하기 위한 방법이에요. 예를들면 ci 기본으로는 controllers/aaa.php 또는 controllers/zzz/bbb.php 까지 만들 수 있는데 controllers/zzz/yyy/xxx/ccc.php 이런식으로 하위 폴더를 더 만들 기 위한 방법입니다. 아래 코드처럼 코어 Router를 확장해서 MY_Router를 만들어서 라이브러리에 추가하면 됩니다. 코어하고 크게 달라진 점은 없고, 하위 폴더를 찾는 부분만 약간 수정을 했습니다. class MY_Router extends CI_Router { /** * Validates the supplied segments. Attempts to determine the path to * the controller. * * @access private * @param array * @return array */ function _validate_request($segments) { // Does the requested controller exist in the root folder? if (file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].EXT)) { return $segments; } // Is the controller in a sub-folder? if (is_dir(APPPATH.'controllers/'.$this->fetch_directory().$segments[0])) { // Set the directory and remove it from the segment array $this->_append_directory($segments[0]); $segments = array_slice($segments, 1); if (count($segments) > 0) { // Does the requested controller exist in the sub-folder? if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].EXT)) { return $this->_validate_request($segments); } } else { $this->set_class($this->default_controller); $this->set_method('index'); // Does the default controller exist in the sub-folder? if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$this->default_controller.EXT)) { $this->directory = ''; return array(); } } return $segments; } // Can't find the requested controller... show_404($segments[0]); } /** * Append the directory name * * @access public * @param string * @return void */ function _append_directory($dir) { $this->directory .= $dir.'/'; } } |
|||
다음글 | 장바구니 시험적용 및 버그 (3) | ||
이전글 | debug용 헬퍼. (3) | ||
ci세상
/
2009/10/01 22:13:20 /
추천
0
1.7.2에서도 정상작동합니다. 감사합니다.^^
|