Laravel中的通配符URL路由

时间:2014-10-07 02:21:41

标签: php laravel-4 laravel-routing

我试图在laravel中创建一组路由。前两个很简单。

/ loading home
/ 12345通过ResultController加载12345的结果,我用{result}/完成了。

我想要的第三条路线是/ 12345 / foo / bar / baz,它最终将执行第二个呈现文件的控制器。基本上/ foo / bar / baz代表文件位置,因此它可以是任何级别的深度。我想将它作为单个值传递给控制器​​。我尝试了以下路线来测试它是否可行:

Route::get('/', function()
{
    return View::make('home.main');
});
Route::get('{result}/', 'ResultController@showResult');
Route::get('{result}/(.*)', function() {
    return 'Huzzah!';
});

目前,转到{result} /下面的任何路径仍然会产生404.例如:

/12345/foo -> Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

1 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情,但可能不是一个非常好的解决方案:

Other route declaration
Route::get('')

// At the bottom
Route::get('{result}/{any?}', function($result, $any = null) {

    // $any is optional
    if($any) {
        $paramsArray = explode('/', $any);
        // Use $paramsArray array for other parameters
    }

})->where('any', '(.*)');

小心,它可以捕获与此匹配的任何URL。把它放在所有路线的底部。