我正在尝试将一个数组和一个ID作为参数传递给控制器函数,但是它不起作用。
我以不同的方式尝试了多次,但仍然无法正常工作。
view.blade.php
<form method="post" action="{{ route('clients.insert_clients', [$campagne->id, 'importData_arr' => $importData_arr, 'id_campagne' => $campagne->id]) }}">
web.php
Route::post('clients/importer/{campagne}', 'CampagneController@upload_clients')->name('clients.upload_clients');
CampagneController.php
public function insert_clients($importData_arr, $id_campagne)
我得到的错误
Too few arguments to function App\Http\Controllers\CampagneController::insert_clients(), 1 passed and exactly 2 expected
有什么想法吗?
答案 0 :(得分:1)
更改
<form method="post" action="{{ route('clients.insert_clients', [$campagne->id, 'importData_arr' => $importData_arr, 'id_campagne' => $campagne->id]) }}">
收件人
<form method="post" action="{{ route('clients.insert_clients', ['campagne' => $campagne->id, 'importData_arr[]' => $importData_arr]) }}">
更改
public function insert_clients($importData_arr, $id_campagne)
收件人
public function insert_clients($campagne, Request $request)
您具有由路由定义的必需参数(campagne
),因此您需要在该数据数组中显式传递它。
答案 1 :(得分:1)
您需要使用2个参数而不是1个参数来定义路线。
Route::post('clients/importer/{importData}/{campagne}', 'CampagneController@upload_clients')->name('clients.upload_clients');
答案 2 :(得分:1)
我认为您正在尝试以一种非常混乱的方式实现目标。首先您的路线
Route::post('clients/importer/{campagne}', 'CampagneController@upload_clients')
您在声明单个变量campagne
,但在控制器中您将相应的功能声明为
public function insert_clients($importData_arr, $id_campagne)
这就是为什么出现错误,传递单个变量($campagne
)的原因,但是控制器的方法需要两个变量($importData_arr
,$id_campagne
)。 / p>
您应按以下方式更新方法
public function insert_clients($campagne)
以及您的表格:
<form method="post" action="{{ route('clients.insert_clients', ['campagne' => $campagne->id]) }}">
@foreach($importData_arr as $value)
<input type="hidden" name="importData_arr[]" value="{{ $value }}" />
@endforeach
<!-- Other fields -->
提交表单后,您可以按以下方式恢复数据:
public function insert_clients($campagne) {
$importData_arr = request()->get('importData_arr');
}