http://sample.cikorea.net/mvc_sample/basic_sample
컨트롤러란 무엇인가?
간단하게 말하면 컨트롤러는 URL과 상호작용하는 클래스 파일이라고 할수 있습니다.
아래 URI를 보세요 :
example.com/index.php/blog/
위 예제에서 CodeIgniter 는 blog.php 라는 파일을 Controller 로서 찾은후 로드 합니다.
컨트롤러의 이름이 URI 의 첫번째 새그먼트와 동일하다면 해당 컨트롤러는 자동적으로 로드될것입니다.
따라해보세요: Hello World!
실재로 작동되는걸 확인해보는것이 쵝오죠 ! blog.php 라는 파일을 만든후 다음의 코드를 입력하세요 .
그다음에 application/controllers/ 폴더에 저장하세요 .
자 이제 아래예 처럼 브라우저에서 접속보세요 .(example.com 부분은 여러분의 url 로 대체되어야합니다):
example.com/index.php/blog/
정상적으로 하셨다면 Hello World! 라는 텍스트가 화면에 표시되는걸 보실수 있을거예요.
Note: 클래스명은 반드시 대문자로 시작되어야합니다. 아래의 예제는 맞습니다.:
<?php
class Blog extends CI_Controller {
}
?>
그러나 아래의 예제는 틀렸습니다.
<?php
class blog extends CI_Controller {
}
?>
님하가 만드신 컨트롤러는 반드시 부모컨트롤러 로 부터 상속(extends)받아야합니다.그렇지않으면 컨트롤러의 기능을 사용할 수 없습니다.
함수 (Functions)
위 예제에서 함수이름은 index() 였습니다. “index” 함수는 URI 에서 두번째 새그먼트가 전달되지않을때 기본으로 실행됩니다. 아래와같은 방법으로도 위 예제와같이 “Hello World”를 화면에 뿌릴수 있습니다.
example.com/index.php/blog/index/
URI 의 두번째 새그먼트는 컨트롤러 내의 어떤함수가 실행될지를 결정합니다..
따라해보세요. 새로운 함수를 컨트롤러에 추가합니다.
아래 URL로 접속하여 comment 함수를 실행시켜봅시다:
example.com/index.php/blog/comments/
새로운 메세지가 보이시죠 ? 짝짝짝
URI Segments 를 함수에 전달하기
URI 가 2개보다 많은 세그먼트를 포함하고있다면 나머지들은 파라미터로 함수에 전달됩니다.
예를들어 다음의 URL 이라면:
example.com/index.php/products/shoes/sandals/123
함수는 새그먼트 3번과 4번(“sandals” 및 “123”)을 파라미터로 전달받게 됩니다.
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
?>