2014-09-08 2 views
2

내 웹 사이트의 포럼 섹션을 Laravel 4 (으)로 마이그레이션하고 있습니다. 직접 페이지 매김을 관리합니다. (아니 Laravel 내장 한)Laravel 라우팅 : 선택적 URL 세그먼트의 정적 텍스트

내 URL은 현재 다음과 같은 형식을 사용합니다 : I 마이그레이션 후 그런 식으로 그것을 유지하고 싶습니다

example.com/forum 
example.com/forum/page-1 

합니다.

내 경로는 다음과 같습니다

Route::get('/forum/page-{page?}', 
    array('uses' => '[email protected]', 'as' => 'forum')); 

하지만 페이지 번호없이 페이지를 요청할 때, 물론이 작동하지 않습니다.

나는 /forum/{pagetext?}-{page?}처럼 할 수 있지만 컨트롤러의 pagetext 매개 변수를 잡아두고 싶지 않으며 URL :: route()가있는 페이지에 대한 URL을 만들 때 $ 페이지 매개 변수 만 제공하려고합니다.

나는 인터넷에서 많은 예제를 발견했지만, 항상 여러 개의 매개 변수가 있으며 정적 선택적 텍스트는 없었습니다.

어떻게이 "정적"부분을 선택적으로 만들 수 있습니까?

/forum/(page-{page})?과 같은 정규 표현식에서 선택 그룹과 같은 것으로 생각하지만 Laravel에서 어떻게 할 수 있습니까? 당신이 진정으로 선택적으로 매개 변수를해야하는 경우

+2

당신이 그 다음 선택되고 싶은 이유는 무엇입니까? 'forum' url을 1 개의 라우트로,'forum/page- {page}'를 다른 것으로 할 수 있습니다. 둘 다 원하는 경우 동일한 컨트롤러 (메소드)를 사용하십시오. –

+0

@JarekTkaczyk 처음에는 생각했지만 잊어 버렸습니다. 그것을 언급 주셔서 감사합니다. 그것은 두 가지 길을 가지고있는 인상을 주지만 그것은 매우 똑같습니다. 그래서 저에게는 완전히 좋지 않습니다. 하지만 깨끗한 매개 변수를 갖는 것은 매우 좋은 접근 방법입니다. – Kaktus

답변

1

, 나는 그 길의 전체 세그먼트 하나의 매개 변수를 만들 것입니다, 당신은 그것을 적용하는 정규 표현식을 사용할 수 있습니다

Route::get('/forum/{page?}', function($page = null) { 
    echo 'On page ' . $page; 
})->where('page', 'page-[\d]+'); 

여기 단점은있다 당신의 경로에서 숫자 페이지 번호를 얻어야합니다. @Jarek이 코멘트에

언급 한 바와 같이, 당신은 또한 두 개의 서로 다른 경로로이 분할 할 수 있습니다

Route::get('/forum', function() { 
    echo 'Forum Index'; 
}); 

Route::get('/forum/page-{page}', function($page) { 
    echo 'On page ' . $page; 
})->where('page', '[\d]+'); 
+0

Laravel에서 매개 변수 내용을 추가적으로 처리하지 않고 "기본으로"수행 할 방법이 없다면 @Jarek 솔루션은 깨끗한 솔루션처럼 보입니다. 나는 그 (것)들 사이에서 스위치를하기 위하여 동일한 경로 이름으로 둘 다 부를 수있는 가능성을 놓치고, 페이지의 null 또는 수를 통과한다. – Kaktus