C'è un equivalente al percorso di Laravel 3 :: Condividi a Laravel 4?
Domanda
Ho recentemente migrato un'applicazione da Laravel 3 a Laravel 4 e ha trovato qualcosa che è stato usato a Laravel 3 che non riuscivo a trovare un equivalente a Laravel 4.
A Laravel 3 c'era un Route::share
e nella mia applicazione è stato il seguente percorso condiviso che fondamentalmente ha reindirizzato un URL di una serie legacy a un nuovo URL.Ovviamente, questo potrebbe essere fatto con le regole Mod_rewrite, ma potrebbe esserci altri comportamenti oltre a semplici reindirizzamenti che accadono nel percorso che potrebbe essere condiviso.
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 );
} );
.
C'è un equivalente a questo a Laravel 4?L'unica cosa che sono stata in grado di fare era creare percorsi discreti per ognuno di loro.Sembra che ci dovrebbe essere un modo più elegante:
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'); });
. Soluzione
Ho intenzione di pubblicare questo come risposta alla mia stessa domanda perché ho trovato qualcosa che funziona.Questo utilizza un parametro URL e il metodo where()
con un regex per determinare se corrisponde a uno qualsiasi degli URL in un elenco.Comunque non ritengo ancora che questo sia elegante come quello che era a Laravel 3 (a meno che non ti piaccia davvero le espressioni regolari e trovarle eleganti).
Sento ancora che ci sia una soluzione più elegante.
Route::any('{any?}', function(){ return Redirect::route('lyrics'); })
->where('any', '(Songbook\/songbook\.html|Songbook|songbook\/songbook\.html|songbook|tgbs)');
.