2014-09-29 75 views
1

我正在製作一個小型電視節目應用程序,我想在URL中顯示節目名稱(slug)。在Laravel 4中的SEF路由

當我列出所有節目時,顯示的URL是/shows/{show_id}。這不是我想要的路由。

示例我希望如何: /shows/{show_name}其中show_nameShow模型上的字段。

在我routes.php我簡單地使用Route::resource('shows','ShowsController');

回答

1

你會使用一個路由綁定:

Route::bind('show', function($value, $route) { 
    return Show::where('show_name', $value) 
     ->first(); 
}); 

和個人路線:

Route::get('shows/{show}', '[email protected]'); 

我不相信資源路由可此時與綁定結合使用。

+0

使用'Route :: controller'而不是'Route :: get'會更好嗎?這將起作用,但它遠離我想實現的優雅 – Ortixx 2014-09-29 20:56:47

+1

@Ortixx我還沒有嘗試過使用綁定的Route :: controller。不客氣,我不能保證它的正確性。我個人偏好明確的,我定義的路線,而不是Laravel的神奇路線。 – ceejayoz 2014-09-29 21:02:35