CI 묻고 답하기

제목 페이지 번호 처리를 하기 위해서는 좀 쉬운 방법이 없을까요??
카테고리 CI 2, 3
글쓴이 칸이 작성시각 2019/08/21 16:11:44
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 10860   RSS

url 주소가 이렇게 되어 있습니다.

http://localhost/adm/mem/2

이 page 번호를 처리하기 위해서..

route에서 숫자가 오면 해당 컨트롤러를 부르는 형태로 처리해 주고 있습니다.

 

if (config_item('uri_adm') !== 'adm') {

     $route[config_item('uri_adm')] = 'adm';

     $route[config_item('uri_adm') . '/(.+)'] = "adm/$1";

}

 

$route['mem/(:num)'] = 'member';

$route['board/(:num)'] = 'board';

$route[config_item('uri_adm').'/mem/(:num)'] = 'adm/member';

 

우선 작동은 문제없이 잘 됩니다.

그런데, 페이징이 들어간 곳이 더 많아질거 같은데..

그때마다 route에 이렇게 추가를 해 주어야 하는건가요??

 

방식이 제대로 된것인지 모르겠습니다.

route에 매번 컨트롤러 추가때마다 이렇게 처리를 하는것이 아닐거라는 생각이 되어서요..

좀더 관리가 쉬운 방법이 없을까요??

 

adm 이라는 실제 디렉토리가 존재합니다..

(컨트롤러명이 아닙니다.)

adm 디렉토리를 지정해 두고 그 밑에서 관리하기 위해서 이처럼 만들어 둔겁니다.

그리고, 검색시 페이지 번호이외에 검색어 관련 필드와 검색어등이 더 전달이 되어야 하는데..

이때는 어떻게 처리해야 하는지.. 좀 알려주세요.. ㅡ.ㅜ;

참조 할 것이라도 알려주시면 정말 감사하겠습니다..

 다음글 $this->db->query() 질문입니다... (1)
 이전글 중복 코드 리팩토링 문의 (4)

댓글

kaido / 2019/08/21 16:16:19 / 추천 0

굳이 페이지네이션 uri를 세그먼트 타입으로 하실 필요 없다면 get 방식으로 변경 하시면 해결 됩니다.

[ segments /adm/member/1   get => /adm/member?page=1]

저도 처음에는 세그먼트 타입으로 했다가 갈수록 컨트롤이 어려워져서 get 으로 처리 합니다.

특히 세그먼트 타입은 한 페이지에 페이지네이션이 2개 이상 있을경우 컨트롤이 매우 어려워집니다.

칸이 / 2019/08/21 16:19:18 / 추천 0

세그먼트 타입으로 하는 거면.. 위 형태가 맞는건가요??

근데, get 방식으로 받는다고 해서 route에서 지정이 안되면 오류가 발생하지 않나요??

페이지 번호가 붙으면 없는 페이지라고 나오던데..

kaido / 2019/08/21 16:23:31 / 추천 0

만들기 나름입니다

세그먼트 타입이여도 라우팅 설정 없이 만들수 있습니다만, 페이지 번호 칸수가 유동적이라면 저렇게 설정이 필요합니다.

라우팅 룰을 좀더 보시면 약간은 덜 복잡하게 만들수는 있지만, 어느쪽이든 변수가 생기면 상당히 골치 아퍼지는 구조이긴 합니다.

당연하게도... get 방식으로 만들때는 페이지네이션의 설정값과 구조가 get 타입으로 바뀌어야 정상적으로 작동 합니다.

변종원(웅파) / 2019/08/22 10:17:09 / 추천 0

단순한 사이트(게시판과 일부 소개만 있는)는 페이징까지 고려해서 주소를 셋팅하고(/a/b/page/1)

복잡하거나 확장이 필요한 사이트는 /a/b/?b=1&page=2 형태로 해서 주소를 셋팅하는 것이 좋습니다.