在Laravel路由中使用URI中的内容ID和Slug

时间:2014-04-04 13:20:11

标签: laravel laravel-4

目前我有类型的路线:

lesson/{id}

我希望能够在路径中使用slu ::

lesson/learn-how-to-play

因此lesson/1lesson/learn-how-to-play都会将我带到同一页面。

我将slug作为字段存储在Lesson表中。

我已经看到了同时使用它们的方法,但不能同时使用两者。

那么是否可以调用route('lesson.index', $lesson_id)并使用slug而不是课程ID来呈现URI?

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式使用数字ID过滤路线:

Route::get(
   'lesson/{id}', 
   ['as' => 'lesson.index', 'uses' => 'ControllerName@byId']
)->where('id', '[0-9]+');

然后使用slug作为后备:

Route::get(
    'lesson/{slug}', 
    ['as' => 'lesson.index', 'uses' => 'ControllerName@bySlug']
);