2011-01-22 5 views
0

Kohana 3.0.9에서 계층 적 라우팅을 설정하고 싶습니다. 라는Kohana 하위 페이지가있는 계층 적 경로

URL : http://example.com/company/contact/

가능한 경로 : 라우팅은 다음과 같이 보일 수있는 페이지 및 하위 페이지를 지원해야 <page>(/<subpage>(/<action>))

위에서 언급 한 경로의 문제는 단지 계층 구조를 지원한다는 것입니다 두 단계로 사이트가 http://example.com/company/contact/sub과 같은 "하위 하위 페이지"를 처리 할 수 ​​있어야하는 경우 경로를 변경해야합니다.

또한 한 페이지 컨트롤러에서 요청을 처리하고 싶습니다. 예를 들어, company/contact/sub을 문자열 매개 변수로 사용할 수 있습니다. 나는 <directory> 키를 알고 있고 그것을 사용할 계획이 아닙니다.

경로를 무제한 중첩 페이지와 "호환"할 수있는 방법이 있습니까?

미리 답변 해 주셔서 감사합니다.

답변

1

ROUTING 섹션을 보면 맞춤 REGEX 패턴을 만들 수 있습니다. (여기에서 읽음) http://kohanaframework.org/guide/kohana/routing

기본적으로 "매개 변수"를 라우팅하면 구두점이 제거됩니다.

"/"을 허용하도록 정규식을 설정할 수 있습니다.

다음 마지막 매개 변수를 잡고 $ pieces = explode ("/", $ pizza);로 분해 할 수 있습니다.

예 :. http://example.com/company/contact/subpage/subsubpage/action

Route::set('multilevel', '(<controller>(/<page_levels>/<action>))' 
, array('page_levels' => '.*')) 
    ->defaults(array(
     'controller' => 'page_controller', 
     'action'  => 'index', 
    )); 

번 확인 정규식하지만, 기본적으로 모든 "/"당신의 ACTION_에서 액션 매개 변수를 구분해야합니다 매우 마지막 (제외

[잡고 동작] 함수 (이 예의 경우 Controller_Contact)

$page_levels = Request::instance()->param('page_levels'); 
$page_array = explode("/",$page_levels); 

이 당신

$page_array = array ([1] => 'contact', 
         [2] => 'subpage', 
         [3] => 'subsubpage') 
+0

을 받아야 좋아 보인다, 그러나 정규식은 작동하지 않았다. 나는 그것을 (. *)로 바꾸었지만, 불행히도 그 행동은 끊어진다. 'page_levels'는 http : // localhost/kohana/page/bonjour/sub/doublesub/index에 대해'bonjour/sub/doublesub/index'를 포함합니다. – Daniel

+1

@daniel을 사용하면 ( (/ /my_action))로 연결 한 후 (. *)/하드 코드 ACTION을 시도한 다음 'action'=> 'my_action'을 작업 매개 변수에 하드 코드로 설정할 수 있습니다. 나는 얼마나 많은 다른 행동을했는지 확신 할 수 없다. – zerojarvis

+0

@ 다니엘은 ROUTE를 다음으로 변경합니다. 경로 : ('( (/ /))' 어레이 ('page_levels를'=> '다단계') '. *')를 설정 -> 디폴트 (어레이 ( '제어기'=> ' 환영 ', '동작 '=>'색인 ', )); – zerojarvis