我想创建一个允许多个细分的动态路线。
example.com/segment1
example.com/segment1/segment2/
example.com/segment1/segment2/segment3
使用此:
Route::get('{slug}', 'PagesController@index');
给我第一个动态片段,当然我可以这样做:
Route::get('{slug1}/{slug2}', 'PagesController@index');
等等,但我确信有更好的方法可以做到这一点。
答案 0 :(得分:1)
我认为使用Route::get('{slug1}/{slug2}', 'PagesController@index');
时的一个复杂因素是处理所有可能的输入,因此segment1/segment2/
和foo/bar/
。你最终可能会得到许多不必要的逻辑。
这可能不是最好的解决方案,但我相信团队会为你想要完成的事情做好准备。
Route::group(array('prefix' => 'segment1'), function() {
Route::get('/', 'ControllerOne@index');
Route::group(array('prefix' => 'segment2'), function() {
Route::get('/', 'ControllerTwo@index);
Route::get('/segment3', 'ControllerThree@index');
});
});
当只处理三个例子时可能有点乱,但最终可能会有益并提供更好的层次结构来使用。
这也有利于使用before
和after
过滤器。与所有segment2
个端点一样,如果您想要执行某些过滤器,而不是将过滤器添加到所有单个端点,您只需将其添加到组中即可!
Route::group(array('before' => 'someFilter', 'prefix' => 'segment2'), function() {
// ... ...
});