CI 묻고 답하기

제목 uri 파싱
글쓴이 도대체 작성시각 2014/04/28 15:00:11
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 16582   RSS
http://ip/snapshot.get?channel=1

위와 같은 uri 를 받으려면

controller를 어떻게 만들어야되나요

함수명에는 .get이 들어갈 수 없는데

uri rewrite 같은 작업을 해야되나요?
 다음글 화면에 실시간 시계 또는 타이머 달 수 있나요 ? (4)
 이전글 active record join 에서 정수형을 조건으... (2)

댓글

한대승(불의회상) / 2014/04/28 16:22:25 / 추천 0
rewrite를 사용하시거나 URI 클래스를 확장하면 가능하지만 별로 추천하고 싶지는 않네요.

http://ellislab.com/forums/viewthread/78812/

확장자가 하나로 고정 되어 있다면 application/config.php 의 $config['url_suffix'] 항목을 아래처럼 수정 해도 됩니다.
 
$config['url_suffix'] = 'get';
도대체 / 2014/04/29 09:32:52 / 추천 0
xxx.xxx.xx.xxx/snapshot.get?channel=1

클라이언트에서 위의 URL로 요청을 보내기 때문에

컨트롤러를 맞춰서 구현해야합니다.

/class/method 형태인데

저 URL은  아이피 뒤에 /가 한개 밖에 없어서

rewrite 로 "^/snapshot\.(.*)" => "/index.php/snapshot/$1"
요렇게 했는데 404 에러 발생하네요
직접 /index.php/snapshot/get 입력하면 해당 페이지 나옵니다.
좋은 방법 없나요? ㅜ
한대승(불의회상) / 2014/04/29 10:10:45 / 추천 0
route 를 사용해 보세요.

나만의 라우팅 사용하기 부분 참고 하시고
application/config/route.php 쪽에서 수정 하시면 됩니다.

http://cikorea.net/user_guide_2.1.0/general/routing.html
도대체 / 2014/04/30 11:23:57 / 추천 0
한대승님 답변 감사드립니다.

route 기능 아주 편리하네요..

그런데 . 는 \. 로 확장시키니깐 매칭이 되는데 
? = 는 \로 확장해도 매칭이 안되네요 ㅜㅜ

$route['snapshot(\.)get] = 'snapshot/get/4' 요런식으로 되지만
$route['snapshot(\.)get(\?)channel(\=)(:num) = 'snapshot/get/$4' 

위처럼 하니깐 안됩니다. ㅜㅜ
? 와 = 는 앞단에서 다르게 처리되는것 같네요 ..

제가 접근을 잘못한것인지 
어떻게 해야될까요
한대승(불의회상) / 2014/04/30 11:48:23 / 추천 0
?는 GET 데이타 이므로
 
$this->input->get('channel');
사용 하세요.
도대체 / 2014/04/30 20:02:52 / 추천 0
감사합니다.
? 포함 그 이하의 쿼리스트링은 처리하지 않아도 get으로 접근가능하네요
감사합니다. ㅜㅜ 한대승님