5

URL からワイルドカードをキャプチャし、最初にフィルターに渡してからコントローラーにルーティングしようとしています。質問を正確にプロットする方法はわかりませんが、これまでに試したことは次のとおりです。

Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => 'test@result', 'before' => "test_filter:$1"));

Route::filter('test_filter', function($id = NULL)
{
    if($id)
    echo "This id is " . $id;    // Prints "This id is $1"
});

Route::get('test/(:any?)', array('as' => 'testroute', function($id = NULL)
{
    if($id)
        echo "this id is " . $id;    // Does not do anything
}, 'uses' => 'test@result'));

基本的には、URLにIDが付加されているかどうかを確認し、あればCookieを設定したいです。ただし、場合に関係なく、IDが追加されているかどうかに関係なく、このルートをコントローラーで処理したいと考えています。

非常に多くのルートで同じことをしなければならないので、コントローラーのコードを変更するよりも、フィルターのようなものを好むでしょう。

ワイルドカード要素をクロージャーに直接渡すか、これをパラメーターとして任意のコントローラーに渡すことができることはわかっていますが、その場合はコントローラーコードを変更する必要がありますが、現時点ではできません。

フィルターを通してそれを行うことはできますか? または、コントローラーコードを変更する必要がない他の方法はありますか?

4

2 に答える 2

0

前の直後に匿名を渡してみてください

Route::get('test/(:any?)',
    array(
       'as' => 'testroute',
       'uses' => 'test@result',
       'before' => "test_filter",
       function($my_cookie_value)
       {
          // Set cookie here
       }
    )
 );

ここから撮影

于 2013-02-14T20:19:34.457 に答える
0

ミドルウェアhttp://laravel.com/docs/5.1/middleware (または古い Laravel バージョンのフィルター) を使用し、ルートをグループに追加します。 laravel.com/docs/5.1/routing#route-group-middleware .

ミドルウェアはルート コードの前に実行されます。ここで、Cookie を管理するロジックを追加できます。

于 2015-08-07T11:27:59.387 に答える