我正在尝试匹配URL中的路径,如下所示
我的HTTP请求
http://localhost/myprefix/extra/x/x/x/x/x/2/3/2/
routes.php文件
Route::group(
['prefix' => 'myprefix'],
function () {
Route::get('extra/{path}', ['as' => 'myprefix.one', 'uses' => 'MyController@index']);
Route::get('extraOTher/{path}', ['as' => 'myprefix.two', 'uses' => 'MyController@indexOther']);
}
);
MyController.php
public function index($path)
{
// $path should be extra/x/x/x/x/x/2/3/2/
}
这一直给我错误
NotFoundHttpException in RouteCollection.php line 145:
我怎样才能使这个工作?我在某处读到:任何和:所有但我无法使这些工作。
答案 0 :(得分:3)
有点hacky。
Route::group(
['prefix' => 'myprefix'],
function () {
Route::get('extra/{path}', ['as' => 'myprefix.one', 'uses' => 'MyController@index']);
Route::get('extraOTher/{path}', ['as' => 'myprefix.two', 'uses' => 'MyController@indexOther']);
}
);
添加图案。
Route::pattern('path', '[a-zA-Z0-9-/]+');
现在它将捕获所有路线。
public function index($path)
{
echo $path; // outputs x/x/x/2/3/4/ whatever there is.
// To get the prefix with all the segements,
echo substr(parse_url(\Request::url())['path'],1);
}
不优雅。但它应该做到这一点。