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が付加されているかどうかにかかわらず、このルートがコントローラによって処理されるようにしたい。私は非常に多くのルートで同じことをしなければならないので、コントローラのコードを変更するのではなく、フィルタのようなものを好みます。
私はワイルドカード要素をクロージャーに直接渡すことができますが、これを任意のコントローラーにパラメータとして与えることができますが、その場合コントローラコードを変更する必要があります。瞬間
フィルターでもできますか?または私はコントローラのコードを変更する必要はありません他の方法ですか?
@Gufran私のコードを更新しました – afarazit
いいえ、匿名関数は何もしません。フィルタを適用した後、ルートをコントローラに転送するだけです。また、フィルタや匿名のクロージャの中でワイルドカードの価値をつかむ必要があります。 – Gufran
@Gufranはコードをもう一度更新し、anon関数にマッチを渡して、それが動作しているかどうか確認してください。 – afarazit