CI 묻고 답하기

제목 routes에 관한 질문
글쓴이 슈럭 작성시각 2012/06/19 09:30:52
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 18083   RSS
 안녕하세요. 
항상 많은 도움 받고 있습니다.


오늘은 routes 에 대해서 질문을 드리겠습니다.

게시판을 만들고 있는데요..

$route['board/(:any)/lists'] = "board/lists/(:any)";
이렇게 주고 테스트 한 결과

/board/notice/lists => board/lists/notice 를 가져왔습니다.
그런데...

/board/notice/lists/page/1 => board/lists/notice/page/1 안되더라는 겁니다.
방법이 있을 것 같은데.. 잘 모르겠네요...

즉, lists 뒤쪽에 다양한 조건을 붙일건데 안되는데... 방법 좀..알려주세요 
 다음글 view 가 왜 안될까요 controllers 에서 에... (5)
 이전글 모두들 동적메뉴 관리는 어떻게 하고 계시는지요?? (2)

댓글

한대승(불의회상) / 2012/06/19 09:47:59 / 추천 0
값의 위치가 일정 하다면 $1 $2 와 같은 방법으로 원하는 값을 원하는 위치에 가져다 놓을 수 있습니다.

아래에서 라우팅을 참조 하십시오.

http://cikorea.net/user_guide_2.1.0/general/routing.html

-------

$a['page'] = 1 과 같은 방법으로 값을 가져오고 싶다면..

$this->uri->uri_to_assoc()

$this->uri->ruri_to_assoc()
를 사용하시면 됩니다.

샘플 소스는 아래 url을 참조 하십시오.

http://sample.cikorea.net/sample_view/class/uri

변종원(웅파) / 2012/06/19 10:03:14 / 추천 0
포럼 소스는 라우팅도 이용하지만 주소를 직접 변경도 합니다.

그렇게 하시는 이유가 있을 텐데 이유가 궁금합니다. 포럼소스처럼 컨트롤러만 route하지 않고
세세한 변수까지 하시려는 이유가 궁금하네요. ^^
(규칙이 정형화 되지 않으면 처리하기가 힘듭니다. 세그먼트수가 정해져있고 항상 제 자리에 있지않다면
그걸 일일이 route에 선언하여 사용하기는 힘듭니다)

단순하게 주소를 잘못 설계한 것이라면 지금이라도 구조를 바꾸시는 것이 좋구요.


슈럭 / 2012/06/19 14:45:06 / 추천 0
웅파님...

지금 보는 게시판들의 경우

qna/lists ...
etc_qna/lists ..

와 같이 동일한 규칙을 가지고 있습니다.

저 역시 
board/notice/lists...
board/qna/lists...

이런 구조로 가려고 하는 거에요.

notice나 qna나 기본적인 게시판 구조는 동일하잖아요.
어떤 게시판이 되든 추가할 때.. 프로그램 수정없이 입력된 url로 어던 게시판인지 판단 하려고 하는 겁니다.

board/lists 라는 class/function을 가지고 notice라는 게시판 ID에 따라 나뉘는 건데요.

이럴경우 routes를 사용하면 되겠다 싶었는데 아닌가요?
세그먼트 수는 3개는 항상 일정합니다.
클래스, 게시판아이디, 함수명 뒤에오는 것들은 조회조건이 올 것이기 때문에.. 무리가 없어 보이는데요.
변종원(웅파) / 2012/06/19 15:37:56 / 추천 0

슈럭/ 특별한 이유가 있는가 해서 여쭤본겁니다.

board/notice/lists <-- 영어의 문법 형태도 아니구요 그렇다고 한글 문법 순서도 아닌데 왜 그렇게 하시는지가 이해가 안되서 그렇습니다.

기본이 컨트롤러/메소드/변수1/변수2 형태인데 컨트롤러/변수1/메소드/변수2의 형태를 왜 하시려고 하는지가 궁금해서요. ^^

포럼주소처럼 게시판명/동사/변수 형태면 qna/view/1  중복되는 컨트롤러명을 줄이고 주소를 인식하기 쉽게 한다는 목적이 있는 것인데 board/qna/view/1 의 형태는 주소를 줄인 것도 아니고 주소의 가독성이 높아진 것도 아니라서 효용성의 의문이 들어서 그런 겁니다.

슈럭 / 2012/06/19 15:59:53 / 추천 0
 게시판만 사용하는게 아니라서요. 앞에 board를 붙여준겁니다.
업무용 사이트라서 업무별로 나누려고 하다보니 그렇게 되네요.

kirrie / 2012/06/19 16:50:29 / 추천 0
$route['board/(:any)/lists'] = "board/lists/(:any)";
이걸
$route['board/(:any)/lists/:any'] = "board/lists/(:any)";
로 변경해주세요.

작성하신 라우팅 패턴은 입력한 uri와 정확하게 일치하지 않기 때문에 404 에러를 냅니다.
마지막을 :any로 하면 뒷부분에 어떤 패턴이 와도 통과시킵니다.