Laravel中的通配符URL路由


Wildcard URL routing in Laravel

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

/加载主页
/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

您可以尝试这样的方法,但可能不是一个很好的解决方案:

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。把这个放在所有路线的底部。