URI Routing
- 사용자가 접근한 URI에 따라서 Controller의 메소드를 호출해주는 기능
▣ URL 기본 규칙
ex ) http://~/index.php/Controller/Method/1
첫번째 path : Controller
두번째 path : 그 콘트롤러의 method
세번째 path ~ : 두번째 method에 전달되는 파라미터
▣ URL 매핑
- 대상(URI)과 대상(URI에 해당하는 Contorller, method, parameter)을 일치시키는 것.
- 기본적으로 코드이그나이터는 매핑 규칙을 가지고 있으나, 그 규칙과는 다른 맵핑 형식을 사용하고 싶을 때는, URL 맵핑을 변경하면 된다.
▣ 코드이그나이터 URL 매핑 변경하기
가장 중요한 것 : 맵핑 규칙을 정의하는 파일에 대해 이해하는 것.
application>config>router.php : URI 라우팅 규칙을 정의할 수 있는 파일.
일반적으로 URI에서 method이라고 하는 것은 URL 상에서 불필요한 존재
이유: 1이라고 하는 것은 아이디값이기 때문에 method가 없어도 의미 전달에 충분하기 때문. -> 일반적으로 코드이그나이터 규칙으로는 성립되지 않음.
▣ 이 규칙을 바꾸는 방법 (코드이그나이트 URL 매핑 변경하기)
- 기본
ex) $route['topic/(:num)'] = "topic/get/$1";
해석 ]
route라는 배열에 'topic/(:num)' 부분은 키값을 의미한다.
사용자가 접근한 URL이 이 키값에 해당되는 규칙에 해당된다면 = 뒤에 있는 route의 value값에 해당되는 'topic/get/$1'가 호출된다.
$1 : back reference , :num 양옆에 괄호를 하게 되면 괄호안에 들어가는 값이 $1이라는 파라미터가 되어서 치환된다.
- 정규표현식을 사용한 방법 + 클래스 재정의
URL 라우팅에서는 정규표현식도 사용할 수 있다. 정규표현식의 규칙을 사용하여 좀더 복잡한 형태의 URI 매핑을 할 수 있다.
- 정규표현식? 문자에서 어떤 패턴을 찾아내는 일종의 프로그래밍 언어
ex) $route['topic/([a-z]+)/([a-z]+)/(\d+)'] = "$1/$2/$3";
해석 ]
[a-z]+ : [대괄호]안에 있는 문자중에 하나(+)라도 해당된다면, 이 패턴과 값이 일치하는 것.
[a-z]+ : 수량한정자, 앞에 있는 [a-z] 조건에서 한개 이상이라면 이 패턴에 일치한다.
\d : 숫자를 의미 , 숫자 모두 만족
이 방법은 route.php에 위처럼 정의하고, 이 조건을 만족하는 클래스(controller)를 생성해주어야 한다.
ex) ~/index.php/topic/module/get/1
Module 클래스 생성(파일명:module.php). get method 생성. 1 파라미터
- 코드이그나이터는 예약된 패턴을 가지고 있다.
- $route['default_controller'] = 'topic/index';
사용자가 어떤 Path를 지정하지 않고 웹에 접근했을 때, 어떤 Controller에 접근할 것인지 정하는 것.
위와 같이 설정한다면, 루트 디렉토리까지만 접근해도 지정한 페이지가 보여진다.
- $route['404_override'] = 'errors/notfound';
사용자가 존재하지 않는 페이지에 접속 했을 때 나오는 메시지 지정 (이 또한 클래스 생성 필요)
'Language > PHP' 카테고리의 다른 글
[CodeIgniter] 로그 (0) | 2017.08.19 |
---|---|
[CodeIgniter] 설정 (0) | 2017.08.19 |
[CodeIgniter] Helper (0) | 2017.08.18 |
[CodeIgniter] MVC (0) | 2017.08.17 |
CodeIgniter (코드이그나이터) (0) | 2017.08.17 |