2014-01-08 4 views
0

Я недавно мигрировали приложение из Laravel 3 до Laravel 4 и наткнулся на то, что было использовано в Laravel 3, что я не мог найти эквивалент в Laravel 4.Есть ли эквивалент Маршруту Laravel 3 :: доля в Laravel 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); 
}); 

Есть ли эквивалент этого в Laravel 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'); }); 
+0

Это __may__ быть полезным: http://stackoverflow.com/questions/17489492/multiple-routes-in-single-routeget-call-laravel-4 – naththedeveloper

+0

Благодаря @FDL. Не совсем то, что я ищу, поскольку он все еще требует явного определения обработчика маршрута для каждого маршрута. –

ответ

0

Я собираюсь опубликовать это как ответ на свой вопрос, потому что нашел что-то, что работает. Это использует параметр url и метод where() с регулярным выражением, чтобы определить, соответствует ли он любому из URL-адресов в списке. Однако я до сих пор не чувствую, что это так же изящно, как в Laravel 3 (если вам не нравятся регулярные выражения и не находят их изящными).

Я все еще чувствую, что есть более элегантное решение.

Route::any('{any?}', function(){ return Redirect::route('lyrics'); }) 
    ->where('any', '(Songbook\/songbook\.html|Songbook|songbook\/songbook\.html|songbook|tgbs)'); 
Смежные вопросы