당신은 확실히 "무시"할 수 Laravel와 매개 변수 - 즉 것은 그들을 선택하기 - 자신의 이름 뒤에 물음표를 추가하여 :
Route::get('article/{slug?}/{id?}', '[email protected]');
참고가 선택적 함수 인수를 처리 PHPs 방법에 의해 제한된다 : 오른쪽에 필요한 인수가있는 경우 가장 왼쪽의 인수는 선택 사항이 될 수 없습니다.
// Do
Route::get('article/{id}/{slug?}', '[email protected]');
...
function show($id, $slug = null) {}
// Don't
Route::get('article/{slug?}/{id}', '[email protected]');
...
function show($slug = null, $id) {}
위의 의견에 동의한다는 전적으로 논리적 인 의견이있을 수 있습니다. 데이터베이스에서 기사를 검색하려면 slug
또는 id
중 하나가 필요하지만 동시에 동일한 기사를 찾기에 충분하다고 생각하면됩니다.
Route::get('article/{id}/{slug?}', array(
'as' => 'article.show',
'uses' => '[email protected]'
));
...
function show($id, $slug = null)
{
$article = Article::find($id);
if (!$slug) {
return Redirect::route('article.show', array($id, $article->slug));
}
...
}
:
당신이 정말로 더 "크롤링"URL을 만들기 위해 옵션 슬러그를 원한다면
, SEO-친근, 기억에 남는 또는 무엇을 가지고, 여기에 위의 예에서 구축 제안입니다
누구나 슬러그가없는 URL에 액세스하려고하는 이유는 없습니다.하지만 이는 귀하에게 달려 있고 앱으로 무엇을하려는 것일 수 있습니다. 이렇게하면 적어도 모든 사람이 전체 URL을 사용하여 같은 지점에서 끝나도록하는 동안 슬러그를 '선택적'으로 만들 수 있습니다. 당신은 여전히 솔루션에 대한 여부를 보면 내가 아는 해달라고
Route::get('article/{slug}/{id}', function($slug, $id)
{
return App::make('ArticleController')->show($id);
});
'article/{id} ''로의 경로를 변경할 수 있습니까? –
네,하지만'/ article/12345'보다 기억하기 쉬운'/ article/some-title/12345'와 같이 사용자가 입력하는 추가 이점을 잃을 것입니다 (예를 들어, at StackOverflow의 URL). – Lazlo
그러면 show 함수를'public function show ($ slug, $ id)'로 바꾸지 않으시겠습니까? 컨트롤러에 슬러그로 기사를 가져올 수 있습니까? 당신의 옵션은 여기에서 꽤 제한되어 있습니다, 당신은 경로에서 슬러그를 원하거나 그렇지 않습니다. –