目前我有类型的路线:
lesson/{id}
我希望能够在路径中使用slu ::
lesson/learn-how-to-play
因此lesson/1
和lesson/learn-how-to-play
都会将我带到同一页面。
我将slug
作为字段存储在Lesson
表中。
我已经看到了同时使用它们的方法,但不能同时使用两者。
那么是否可以调用route('lesson.index', $lesson_id)
并使用slug而不是课程ID来呈现URI?
答案 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']
);