Laravel 4具有多个细分的动态路线

时间:2013-08-08 15:49:00

标签: php laravel laravel-4 slug laravel-routing

我想创建一个允许多个细分的动态路线。

example.com/segment1
example.com/segment1/segment2/
example.com/segment1/segment2/segment3

使用此:

Route::get('{slug}', 'PagesController@index');

给我第一个动态片段,当然我可以这样做:

Route::get('{slug1}/{slug2}', 'PagesController@index');

等等,但我确信有更好的方法可以做到这一点。

1 个答案:

答案 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');

    });
});

当只处理三个例子时可能有点乱,但最终可能会有益并提供更好的层次结构来使用。

这也有利于使用beforeafter过滤器。与所有segment2个端点一样,如果您想要执行某些过滤器,而不是将过滤器添加到所有单个端点,您只需将其添加到组中即可!

Route::group(array('before' => 'someFilter', 'prefix' => 'segment2'), function() {
    // ... ...
});