我正在尝试在 laravel 中创建一组路由。前两个很简单。
/加载主页
/12345 通过 ResultController 加载 12345 的结果,这是我使用 {result}/
完成的。
我想要的第三条路线是/12345/foo/bar/baz,它最终将执行显示文件的第二个 Controller 。基本上/foo/bar/baz 代表文件位置,因此它可以是任何深度级别。我想将它作为单个值传递给 Controller 。我尝试了以下路线来简单测试它是否有效:
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
。将其放在所有路线的底部。
关于php - Laravel 中的通配符 URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227652/