Laravel 3's Route :: Laravel 4のシェアと同等のものはありますか?

StackOverflow https://stackoverflow.com//questions/21002101

  •  20-12-2019
  •  | 
  •  

質問

最近LARAVE 3からLARAVE 4へのアプリケーションを移行し、Laravel 3で使用されていた何かに遭遇しました4。

Laravel 3のRoute::shareがあり、私のアプリケーションには、基本的にシリーズのレガシーURLを新しいURLにリダイレクトした次の共有ルートがありました。明らかに、これはmod_rewriteルールで行うことができますが、共有される可能性のあるルートで発生する単純なリダイレクト以外の他の行動があるかもしれません。

Route::share( array(
    array('GET', 'Songbook/songbook.html'),
    array('GET', 'Songbook'),
    array('GET', 'songbook/songbook.html'),
    array('GET', 'songbook'),
    array('GET', 'tgbs'),
), function () {
    return Redirect::to( 'lyrics', 301 );
} );
.

これと同等のLARVAL 4はありますか?私ができる唯一のものは、それぞれのために控えめなルートを作成することでした。それはよりエレガントな方法があるべきです:

Route::get('Songbook/songbook.html', function(){ return Redirect::route('lyrics'); });
Route::get('Songbook',               function(){ return Redirect::route('lyrics'); });
Route::get('songbook/songbook.html', function(){ return Redirect::route('lyrics'); });
Route::get('songbook',               function(){ return Redirect::route('lyrics'); });
Route::get('tgbs',                   function(){ return Redirect::route('lyrics'); });
.

役に立ちましたか?

解決

私は仕事をすることを見つけたので、私は自分の質問に対する答えとしてこれを投稿するつもりです。これは、URLパラメータとwhere()メソッドを使用して、リスト内のURLのいずれかと一致するかどうかを判断します。しかし、私はまだLARVER 3のものと同じくらい優雅であると感じていません(あなたが本当に正常な表現が好きで、それらを優雅に見つけてください)。

私はまだよりエレガントな解決策があると感じます。

Route::any('{any?}', function(){ return Redirect::route('lyrics'); })
    ->where('any', '(Songbook\/songbook\.html|Songbook|songbook\/songbook\.html|songbook|tgbs)');
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top