2013-02-14 3 views
5

URLからワイルドカードを取得してから、フィルタに渡してからコントローラにルーティングしようとしています。私は正確に質問をプロットする方法はわかりませんが、これまで私が試したことはここにあります。 Laravel、ワイルドカードをフィルタリングしてからコントローラにルーティングする

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

Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => '[email protected]', 'before' => "test_filter:$1")); 

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

は基本的に、私はURLに付加IDがあるかどうかを確認し、存在する場合はクッキーを設定したいです。しかし、関係なく、IDが付加されているかどうかにかかわらず、このルートがコントローラによって処理されるようにしたい。

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

私はワイルドカード要素をクロージャーに直接渡すことができますが、これを任意のコントローラーにパラメータとして与えることができますが、その場合コントローラコードを変更する必要があります。瞬間

フィルターでもできますか?または私はコントローラのコードを変更する必要はありません他の方法ですか?

答えて

0

私は(古いLaravelのバージョンまたはフィルタ)ミドルウェアhttp://laravel.com/docs/5.1/middlewareを使用したいhere

+0

@Gufran私のコードを更新しました – afarazit

+0

いいえ、匿名関数は何もしません。フィルタを適用した後、ルートをコントローラに転送するだけです。また、フィルタや匿名のクロージャの中でワイルドカードの価値をつかむ必要があります。 – Gufran

+0

@Gufranはコードをもう一度更新し、anon関数にマッチを渡して、それが動作しているかどうか確認してください。 – afarazit

0

から撮影

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

前にした後、匿名の権利を渡して試してみて、グループにルート/秒を追加ここに表示されるようなミドルウェアを持っていますhttp://laravel.com/docs/5.1/routing#route-group-middleware

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

+0

ありがとうございます。非常に感謝しますが、この質問は2.5歳です。それは通常質問の下に投稿の日付を表示するので、次回の日付をチェックしようとします。 – Gufran

関連する問題