我需要创建一条在变量后带有破折号的路线。我想要的很容易用代码解释(这是我尝试过的,但它不起作用)
Route::any('tournament/{sportName}/{regionName}/{tournamentName}-odds', array('as' => 'tournament-page', 'uses' => 'HomeController@tournament'));
Run Code Online (Sandbox Code Playgroud)
问题在于这部分“-赔率”。当我添加时,我收到此内容的 Laravel 错误
$others = $this->checkForAlternateVerbs($request);
if (count($others) > 0)
{
return $this->getOtherMethodsRoute($request, $others);
}
throw new NotFoundHttpException;
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点(在路线参数后添加破折号)?谢谢
问题是,如果路由参数后面出现以下字符之一:/,;.:-_~+*=@|,则无法在该路由参数内使用它,因为 Laravel 会调整正则表达式以排除该参数。
我认为造成这种情况的原因是这样的:test/{foo}-{bar}
这意味着您显然可以将 URL 更改为不在-路由参数内使用,或者tournamentName使用以下命令指定适用于您自己的正则表达式条件where():
Route::any('tournament/{sportName}/{regionName}/{tournamentName}-odds',
array('as' => 'tournament-page', 'uses' => 'HomeController@tournament')
)->where('tournamentName', '[^\/]+');
Run Code Online (Sandbox Code Playgroud)