2014-09-29 54 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