如何正确使用数组作为路由参数
How to use array as route parameter properly
我有一个包含此操作的表格:
<form method="POST" action="{{ route('products.create.post.attribute',['product'=>$product->id,'total'=>$total_counts,'array'=>$attribute_ids]) }}">
所以基本上,$attribute_ids
是一个像这样的数组:
array:6 [▼
0 => 14
1 => 15
2 => 16
3 => 3
4 => 7
5 => 8
]
这是路线:
Route::post('/create/product/addAttribute/{product}/{total}/{array}', [ProductController::class, 'postAttribute'])->name('products.create.post.attribute');
然后在控制器中,我设置了这样的方法:
public function postAttribute(Request $request, Product $product, $total,$array){
但是我得到这个错误:
函数 ProductController::postAttribute() 的参数太少,在第 54 行 C:\projectname\vendor\laravel\framework\src\Illuminate\Routing\Controller.php 中传递了 3 个参数,正好有 4 个预期
那么这里出了什么问题?如何正确使用数组作为路由参数?
错误发生是因为您使用数组作为参数名称。更改参数名称,它应该可以工作。
blade
<form method="POST" action="{{ route('products.create.post.attribute',['product'=>$product->id,'total'=>$total_counts,'myarray'=>$attribute_ids]) }}">
路线
Route::post('/create/product/addAttribute/{product}/{total}/{myarray}', [ProductController::class, 'postAttribute'])->name('products.create.post.attribute');
控制器
public function postAttribute(Request $request, Product $product, $total, $myarray){
您不能在 url 中传递数组。您已经以字符串格式传递数组数据。
有两种方式传递数据:
- 在 URL - 你正在做的事情。
- 表单数据 - 使用 inpur 字段。
您必须使用 implode
生成该数组的字符串
创建 foreach 并在其中创建 input
并在输入字段中添加 name="attribute[]"
id。这样你就会得到 $request->attribute
数组。
我有一个包含此操作的表格:
<form method="POST" action="{{ route('products.create.post.attribute',['product'=>$product->id,'total'=>$total_counts,'array'=>$attribute_ids]) }}">
所以基本上,$attribute_ids
是一个像这样的数组:
array:6 [▼
0 => 14
1 => 15
2 => 16
3 => 3
4 => 7
5 => 8
]
这是路线:
Route::post('/create/product/addAttribute/{product}/{total}/{array}', [ProductController::class, 'postAttribute'])->name('products.create.post.attribute');
然后在控制器中,我设置了这样的方法:
public function postAttribute(Request $request, Product $product, $total,$array){
但是我得到这个错误:
函数 ProductController::postAttribute() 的参数太少,在第 54 行 C:\projectname\vendor\laravel\framework\src\Illuminate\Routing\Controller.php 中传递了 3 个参数,正好有 4 个预期
那么这里出了什么问题?如何正确使用数组作为路由参数?
错误发生是因为您使用数组作为参数名称。更改参数名称,它应该可以工作。
blade
<form method="POST" action="{{ route('products.create.post.attribute',['product'=>$product->id,'total'=>$total_counts,'myarray'=>$attribute_ids]) }}">
路线
Route::post('/create/product/addAttribute/{product}/{total}/{myarray}', [ProductController::class, 'postAttribute'])->name('products.create.post.attribute');
控制器
public function postAttribute(Request $request, Product $product, $total, $myarray){
您不能在 url 中传递数组。您已经以字符串格式传递数组数据。 有两种方式传递数据:
- 在 URL - 你正在做的事情。
- 表单数据 - 使用 inpur 字段。
您必须使用 implode
创建 foreach 并在其中创建 input
并在输入字段中添加 name="attribute[]"
id。这样你就会得到 $request->attribute
数组。