| 제목 | pagination 링크 관련 문의드림돠..^^ | ||
|---|---|---|---|
| 글쓴이 | 씨아이세상 | 작성시각 | 2011/11/07 21:37:45 | 
| 
                         | 
                |||
| 
                           세그먼트 방식으로 검색기능을 햇습니다.post방식으로 해보고 이번에는 세그먼트 방식으로 해보고 있습니다. http://127.0.0.1/public/lists/==>검색하지 않고 index페이지 controller    $this->form_validation->set_rules('keyword', 'Keyword', 'trim|required|xss_clean');    $list=$this->model->total_list($data['keyword']);// 게시물총수 $data['perPage']=$config['per_page'] = 3; // 페이지 출력수 $config['total_rows']=$list; //게시물수 $data['TotalData']=$list;      $data['cfg_paging'] = $this->pagination->create_links();  | 
                |||
| 다음글 | CI에서 CI가 아닌 곳으로 값을 어떻게 넘기나요? (2) | ||
| 이전글 | 데이터를 array 형식으로 veiw 페이지로 넘겼을 ... (5) | ||
| 
                             
                                변종원(웅파)
                                /
                                2011/11/07 22:12:30 /
                                추천
                                0
                             
                             | 
                    
| 
                             
                                씨아이세상
                                /
                                2011/11/08 21:10:52 /
                                추천
                                0
                             
                            웅파님감사합니다..검색기능을 post방식으로 작업햇다가 검색어가 유지가 안돼어 세그먼트방식으로 햇는데 많은 공부되었습니다..      if($s_key)        return $s_array[$key]; //검색어 리턴    | 
                    
그래서 주소에 page/1 이라고 변수명/값 형태로 쓰셔야 합니다.
lists/1, lists/keyword/aaa/1 <- 이거 1이라는 값 어떻게 가져올까요? 중간에 주소가 또 늘어난다면 어떻게 가져올까요?
lists/page/1, lists/keyword/aaa/page/1
위와 같이 쓰시면 주소변수중에 page 다음 값을 가져오면 페이징변수가 되겠죠.
포럼 소스 받아서 왜 그렇게 복잡하게 게시물보기 뷰 상단하고 컨트롤러에서 주소를 자르고 붙이고 했는지
이해가 되실 겁니다. (물론 초기에 만든거라 지금은 더 간단하게 처리를 하고 있습니다만..)
포럼소스 라이브러리중 common 라이브러리에 보시면 url_explode()라는 함수가 있습니다.
포럼소스 보시면서 포럼이 동작하는 구조 보시면 이해가 빨리 되실 겁니다.
(그럴 목적으로 소스를 공개한 것이기도 하구요)
/** * url중 키값을 구분하여 값을 가져오도록 * @param Array $url : segment_explode 한 url값 * @param String $key : 가져오려는 값의 key * @return String $url[$k] : 리턴값 */ function url_explode($url,$key){ for($i=0; count($url)>$i; $i++ ){ if($url[$i] ==$key){ $k = $i+1; return $url[$k]; } } } //주소가 http://aaa.com/lists/keyword/aaa/page/1 일 경우위 함수 쓰다보면 이런 질문 하시는 분이 계십니다.$page = url_explode($this->uri->uri_to_accoc(), 'page'); echo $page;
// 1 나옵니다. //위 함수에서 page 대신 keyword 넣으면 aaa를 반환하겠죠.
"keyword/aaa/page/1 이 아니라 keyword/page/1로 쓰면 에러가 나는데 어떻게 하느냐고?"
주소는 개발자가 원하는 형태로 마음대로 만들어서 쓸 수 있는 것이고
그 주소가 틀려서 에러가 난다면 그것은 당연한 것입니다.
정해진 규칙에서 벗어난 것이 되죠. 그 벗어난 경우에 에러처리만 하면 될뿐
잘못된 규칙에 대해 정상적으로 처리해줄 방법을 찾을 필요는 없습니다.
주소를 만든다는 것 = 컨트롤러와 메소드명을 만들어내고 변수형태를 규칙화 하는 것 = 아키텍쳐
아키텍쳐 정의 없이 개발을 할 수는 없죠. ^^ (할 수는 있으나 중구난방)
그래서 다음번 강좌는 컨트롤러, 메소드 명 정하고 변수규칙 정하는 제 방법에 대해
만들어보려고 합니다. ^^