TIP게시판
| KangMin | |
|---|---|
|
안녕들하세요... 많은 분들이 느끼시는 부분이실 $this->uri->segment(순서); 로 GET 대신 사용하는... 순서가 너무도 중요하므로 다소 곤란하거나 수정할 부분이 많이 생길 수 있죠... 그래서 얼마전 mycastor도 올리고, 이런저런 라이브러리 확장 방식등이 보이는 것 같습니다. CI자체에 일반 쿼리스트링을 쓰는 방법도 있긴하지만... 고건 좀 싫어서.... 전 get이긴한데... ?a=1&b=2 방식의 일반적인 방식은 아니고 abc.com/controller/method/파라메터명_값/파라메터명_값 이런 방식으로 만들어봤습니다. 이렇게 한 이유는 아래 소스에도 써있지만, $config['permitted_uri_chars'] 을 손대지 않고, CI 기본 segment를 우선 거친 후 믿을 수 있는 놈을 이용하기 위함입니다. 또, 기존 segment와 병행도 가능하기 위함입니다.. 파라메터 추가할 일이 생겼는데 너무 손댈데가 많아서, 제 입맛에 맞게 만들어봤습니다. 다소 오타쿠스러울지 모르겄지만..ㅋ 사용하실 분들은 마음껏~ 사용해주시면 제가 오히려 감사~~~
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @author BaeKangMin.com
* @param (파라메터명 또는 seg, $no_result) -> 파라메터명이 숫자면 $this->uri->segment(숫자) 와 동일
* @url 타입 : abc.com/controller/method/파라메터명_값/파라메터명_값
* 즉, abc.com/controller/method/a_100/b_200 일때
* $this->uri->get('a') 하면 100이 리턴됩니다.
* $this->uri->get(3) 하면 a_100이 리턴됩니다.
* @목적1 : $config['permitted_uri_chars'] 손대지말기
* @목적2 : CI 기본 segment를 우선 거친 후 믿을 수 있는 놈을 이용
* @목적3 : 파라메터 순서 상관없이 일반(?) get방식과 비스무레하게 사용
* @단점 : 단순히 URL을 파싱하므로, 컨트롤/함수명등과 중복되지 않게 주의해야함...
*/
class MY_URI extends CI_URI
{
public function __construct()
{
parent::CI_URI();
/*
// fail...
foreach($this->segments as $key=>$val)
{
$temp = $this->segment($key);
if($temp != '_' && strpos($temp, '_') !== FALSE)
{
$temp = explode('_', $temp);
// a_ba_bb 의 경우 a를 호출하면 ba_bb가 나와야 하므로 '_' 으로 다시 조합
$this->param[$temp[0]] = join('_', array_slice($temp, 1));
}
}
*/
}
public function get($param, $no_result=FALSE)
{
//파라메터가 숫자면 CI 기본 segment 함수 호출
if(is_numeric($param) === TRUE)
{
return $this->segment($param, $no_result);
//파라메터가 문자면 쿼리스트링을 파싱해서
} else
{
foreach($this->segments as $key=>$val)
{
$temp = $this->segment($key, $no_result);
//ver 2
//정규표현식으로 파라메터명으로 시작하는 것만 잡음
//substr로 파라메터명에 '_' 붙이면 안되는 것 해결
//explode 안함으로인해 시간/메모리 이득
if($temp != $param.'_' && preg_match('/^'.$param.'_/', $temp))
{
return substr($temp, strlen($param.'_'));
}
/*
//ver 1
//파라메터명에 '_' 붙이면 안됨
if($temp != $param.'_' && strpos($temp, $param.'_') !== FALSE)
{
$temp = explode('_', $temp);
// a_ba_bb 의 경우 a를 호출하면 ba_bb가 나와야 하므로 '_' 으로 다시 조합
if($temp[0] == $param) return join('_', array_slice($temp, 1));
}
*/
}
return FALSE;
/*
// fail...
if(array_key_exists($param, $this->param))
{
return $this->param[$param];
} else {
return FALSE;
}
*/
}
}
}
/* End of File */
급히 만들고 잠깐만 테스트해본지라 문제가 될 부분 있으면 말씀해주시기 바랍니다... 꾸지람 및 버그 리포팅 환영합니당~ 휴일 마무리 잘 하세용~ 오늘 제가 뽑은 사람들 반띵만 되면 좋겠네용..ㅋ |
|
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
| 번호 | 제 목 | 글쓴이 | 날짜 | 조회 | 추천수 |
|---|---|---|---|---|---|
| 862 | form validation 에서 한글 체크 규칙 [3] | sliplife | 2012-05-14 | 89 | 0 |
| 859 | 간단한 웹페이지 캐쉬처리 라이브러리 (스마티 캐쉬 .. [2] | sliplife | 2012-05-10 | 145 | 0 |
| 855 | 워드프레스 + Codeigniter [4] | 이현석 | 2012-05-07 | 209 | 0 |
| 850 | CLI 모드로 실행할 때 로그파일 관련문제 [1] | 사랑완샷 | 2012-04-09 | 262 | 0 |
| 848 | Customization Pagination (페이.. [1] | 얼짱짠군 | 2012-04-02 | 490 | 0 |
| 845 | db library 에서 save_queries 옵.. [1] | pithecus | 2012-03-29 | 330 | 0 |
| 842 | 세션 분실 && 읽지못함 관련 팁...이 될 수 있.. [1] | 밥아저씨 | 2012-03-10 | 643 | 0 |
| 836 | Hook을 이용한 preload 이이지 구현에 대한.. [3] | 핵잠함장 | 2012-02-22 | 572 | 0 |
| 833 | CI_Cache_memcached 드라이버 버그 수정 [2] | 한글이 | 2012-02-22 | 528 | 0 |
| 829 | HMVC 5.4 & Template_ 타로구조 만들기 [2] | 타로 | 2012-02-02 | 980 | 0 |
| 824 | CI lang팩 -> Javascript lang팩 [4] | KangMin | 2012-01-25 | 772 | 0 |
| 823 | anchor_popup 헬퍼 화면 정 가운데 띄우기.. [0] | DJ구스 | 2012-01-17 | 652 | 0 |
| 822 | [자바스크립트] 창을 화면 정중앙에 위치하게 계산하기 [1] | 웅파 | 2012-01-11 | 680 | 0 |
| 815 | hook에서 선언한 변수를 컨트롤러에서 사용하기 [2] | 웅파 | 2011-12-27 | 853 | 0 |
| 812 | mysql 부분적인 에러 핸들링 처리 [2] | EziX | 2011-12-20 | 856 | 0 |
| 811 | 컨트롤러 외부에서의 종료방법 [1] | EziX | 2011-12-20 | 682 | 0 |
| 809 | icodekore sms 모듈 쓰는 분들 참고하세요.. [0] | namGoos | 2011-12-09 | 924 | 0 |
| 803 | Upgrading from 2.0.3 to 2.1.0 [5] | namGoos | 2011-12-06 | 896 | 0 |
| 794 | .svn 폴더 삭제 하기 [7] | 불의회상 | 2011-11-30 | 1044 | 1 |
| 792 | [1원] 윈도우서버+mssql 에서 CLI(Comm.. [2] | 터프키드 | 2011-11-29 | 965 | 0 |

