1

複数のセグメントを許可する動的ルートを作成したいと考えています。

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

これを使用して:

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

最初の動的セグメントが表示されます。もちろん、これを行うこともできます。

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

などですが、これを行うためのより良い方法があると確信しています。

4

1 に答える 1

1

を使用するときの複雑さの 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');

    });
});

3 つの例だけを扱う場合は少し面倒かもしれませんが、最終的には有益であり、より適切な階層を提供することができます。

これには、フィルタを使用する利点もありbeforeますafter。すべてのsegment2エンドポイントと同様に、フィルターを実行する場合は、個々のエンドポイントすべてにフィルターを追加する代わりに、グループに追加するだけです!

Route::group(array('before' => 'someFilter', 'prefix' => 'segment2'), function() {
    // ... ...
});
于 2013-08-08T16:04:43.347 に答える