Codeigniter의 routes.php 에서 $route['default_controller'] = "index";로 설정했을때
아래와 같은 상황이 발생할 수 있다.
1. Index 컨트롤러의 index 함수가 2번 호출된다.
2. 부모컨트롤러를 사용할 수 없다.
Codeigniter에서 index는 기본 호출 메소드로 지정되어 있다.
그래서 URL에 2번째 호출값이 없다면 항상 index를 호출하게 된다.
class Index extends CI_Controller { public function index() { echo "index 호출됨"; } public function lists(){ echo "list 호출됨"; } }
- 함수가 2번 호출됨.
위와 같이 Index 라는 컨트롤을 생성 하고 http://localhost/ 라고 호출을 하면 "index 호출됨index 호출됨" 이라고 2번출력 된다.
lists 함수를 호출하기 위해서는 http://localhost/index/lists 라고 해야 하는데, 이것은 index.php를 숨기고자 하는 의도에 반한다. 또한 "list 호출됨list호출됨" 과 같이 두번 호출하게 된다. - 부모 컨트롤러를 사용할 수 없다.
만약 index 함수에 "$this->load->view" 와 같이 상위 컨트롤러의 Message: Undefined property: Index::$load 와 같이 유사 오류 메시지가 호출된다. 해결 방법 Index 컨트롤러에 생성자를 추가하고 부모컨트롤러의 생성자를 호출 한다.
class Index extends CI_Controller { public function __construct(){ parent::__construct(); } public function index() { echo "index 호출됨"; } public function lists(){ echo "list 호출됨"; } }※ 만약 복잡한 시스템에서 하위 디렉토리를 생성해서 사용 할 경우에도 동일하게 적용 된다.
"controllers/board" 와 같이 디렉토리를 생성 했을때 http://localhost/board 라고 접속할 경우 board/index.php 를 생성 해야 한다.
$route['default_controller']를 main으로 설정 했을경우는 board/main.php 를 생성 해야 한다.
@https://ellislab.com/forums/viewthread/99200/#501033
@https://ellislab.com/codeigniter/user-guide/general/controllers.html
@http://www.codeigniter-kr.org/user_guide_2.1.0/general/controllers.html
'PHP' 카테고리의 다른 글
json_encode 시 한글 깨짐 현상 (0) | 2015.05.29 |
---|---|
PHP sprintf를 이용한 실수형(소수점) 연산(float) (0) | 2015.03.12 |
CI 환경설정 - 02 (기본설정,로그,세션,쿠키,출력) (0) | 2014.08.17 |
환경설정 - 01 (디비설정, 기본화면설정) (0) | 2014.08.16 |
PHP 한글 매뉴얼 다운로드 및 editplus 설정 (0) | 2014.07.02 |