Laravel 路由 - 破折号

Vla*_*abo 2 php laravel

我需要创建一条在变量后带有破折号的路线。我想要的很容易用代码解释(这是我尝试过的,但它不起作用)

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)

我该如何做到这一点(在路线参数后添加破折号)?谢谢

luk*_*ter 6

问题是,如果路由参数后面出现以下字符之一:/,;.:-_~+*=@|,则无法在该路由参数内使用它,因为 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)