Слишком мало аргументов для функции App \ Http \ Controllers 1 передано и ожидается ровно 2 - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь передать массив и идентификатор в качестве параметров моей функции контроллера, но он не работает.

Я пробовал несколько раз разными способами, но он все еще не работает.

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

Есть идеи?

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Вы должны определить свой маршрут с 2 параметрами вместо 1.

Route::post('clients/importer/{importData}/{campagne}', 'CampagneController@upload_clients')->name('clients.upload_clients');

1 голос
/ 26 сентября 2019

Я думаю, что вы пытаетесь достичь цели очень грязно.Прежде всего, ваш маршрут

Route::post('clients/importer/{campagne}', 'CampagneController@upload_clients')

Вы объявляете одну переменную campagne, но в вашем контроллере вы объявляете соответствующую функцию как

public function insert_clients($importData_arr, $id_campagne)

, и именно поэтому вы 'Если вы получили ошибку, вы передаете одну переменную ($campagne), но метод контроллера ожидает две переменные ($importData_arr, $id_campagne).

Вы должны обновить метод следующим образом

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');
}
1 голос
/ 26 сентября 2019

Изменить,

<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), определенный вашим маршрутом, поэтому вам нужно явно передать его в этот массив данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...