0

コントローラ内のメソッドのパラメータとしてそれらのURLの一部を使用して、複数のURLを同じコントローラ関数にルーティングしようとしています。これはLaravelフレームワークのルーティング機能に基づいています。htaccess/prettyurlsなどに関する一般的なヘルプは求めていません。具体的には、Laravelroutes.phpファイル内でこれを実現する方法を知りたいです。

ルーティングしようとしているURLは次のとおりです。

domain.com/articles

domain.com/downloads

domain.com/videos

domain.com/digests

これで、routes.phpで次のようなことができることがわかりました。

Route::get(array('digests','articles','videos','downloads'), 'content@list_content');

そして、これは私のコンテンツコントローラーのこの関数にルーティングされます:

public function action_list_content(){}

ただし、実際には関数を次のようにしたいと思います。

public function action_list_content($type){}

また、URLの最初の部分(つまり、ダイジェスト、記事、ビデオ、またはダウンロード)にあるものはすべて、$typeパラメーターとしてaction_list_contentメソッドに送信する必要があります。

これは可能ですか?

(:any)は本当に貪欲で、「domain.com/anyrandomtext」を受け入れるので、使用したくないことに注意してください。

4

1 に答える 1

3

Laravelは、ワイルドカードをさらに処理する前に正規表現に変換します。したがって、実際には、正規表現を指定することで、すぐにそれに飛び込むことができます。

Route::get('(articles|downloads|videos|digests)', 'content@list_content');
于 2013-02-16T19:30:04.587 に答える