我的路线如下:
Route::group([
'prefix' => 'reports'
], function () {
Route::get('/points/{product_name}', ['uses' => 'MyController@get'])->where('product_name', ['product1', 'product2','product3'])
});
因此,我想限制对该端点ID的访问,产品名称为product1
,product2
,product3
。但是使用where
子句,我只能看到使用正则表达式或单个值进行检查。
当我使用像['product1', 'product2', 'product3']
这样的数组时,它抛出错误"message": "Routing requirement for "product_name" must be a string."
我该如何解决?
答案 0 :(得分:2)
对于laravel中的路线,您可以像这样使用它:
where('product_name', 'product1|product2|product3'])
或蒙山数组:
where('product_name', implode("|", ['product1', 'product2','product3']))
答案 1 :(得分:2)
根据laravel docs,您可以在路由实例上使用where方法来限制路由参数的格式。 where方法接受参数名称和一个正则表达式,该正则表达式定义应如何约束参数。因此,您应该执行以下操作:
$allowedParams = implode('|',['product1','product2','product3']);
// it will return you a string as 'product1|product2|product3'
Route::get('/points/{product_name}', ['uses' => 'MyController@get'])
->where('product_name', $allowedParams);
答案 2 :(得分:0)
您可以使用implode();
发送,也可以使用explode();
接收
发送示例:
$array_send = ['product1', 'product2', 'product3'];
$imp_send = implode(",", $aray_send);
// return: product1,product2,produtct3
接收示例:
$array_receive = explode(',', '$product_name');
// return again array