Laravel - 如何使用斜杠允许路由参数?

时间:2018-04-04 15:22:33

标签: laravel

我在laravel路线中检测到一个接收3个参数但参数可能为/的问题。例如:在此路线中:Route::get('/checkSerial/{brand}/{model}/{serie}', 'CORController@checkSerial')

如果品牌价值是这样的:irc / 12234它将假设存在4个参数而不是。

我签入文档以这种方式处理Route::get('/checkSerial/{brand}/{model}/{serie}', 'CORController@checkSerial')->where(['brand' => '[/]+', 'model' => '[/]+', 'serie' => '[/]+']);

但不起作用。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您想要的正则表达式为[a-zA-Z0-9\-\/]+ 在仅使用where的{​​{1}}子句中,您告诉laravel您的参数只是[\]+的组合。 因此,您需要组合使用\个数字a-zA-Z0-9

我还不确定laravel是否可以使用\解析通配符。试试吧!!!

答案 1 :(得分:1)

你的正则表达式错了。

使用:

Route::get('/checkSerial/{brand}/{model}/{serie}','CORController@checkSerial')
    ->where(['brand' => "[\w\/]+"]);

这意味着该品牌可以使用单词字符和斜杠。

但是如果您的模型和系列也需要支持斜线,那么您就遇到了问题。考虑:

checkSerial/irc/12234/12/3/5 

以下所有工作:

  

brand = irc / 12234 model = 12/3 serie = 5

     

brand = irc model = 12234/12 serie = 3/5

     

brand = irc / 12234 model = 12 serie = 3/5

等等,所以要非常小心你如何定义它。