2014-01-08 34 views
0

我最近迁移应用程序从Laravel 3至4 Laravel和整个的东西,在Laravel 3中使用,我无法找到一个等同于Laravel 4Laravel 4中是否有相当于Laravel 3的Route :: share?

在Laravel 3有一个Route::share并来到我的应用程序有以下共享路线,基本上将一系列旧版网址重定向到新网址。显然,这可以通过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)');