Php 传递的函数App\Http\Controllers的参数太少,预期正好为2

Php 传递的函数App\Http\Controllers的参数太少,预期正好为2,php,laravel,Php,Laravel,我试图将一个数组和一个ID作为参数传递给我的控制器函数,但它不起作用 我用不同的方法尝试了多次,但仍然不起作用 view.blade.php CampagneController.php public function insert_clients($importData_arr, $id_campagne) 我得到的错误 有什么想法吗?改变 <form method="post" action="{{ route('clients.insert_clients', [$campagne

我试图将一个数组和一个ID作为参数传递给我的控制器函数,但它不起作用

我用不同的方法尝试了多次,但仍然不起作用

view.blade.php

CampagneController.php

public function insert_clients($importData_arr, $id_campagne)
我得到的错误

有什么想法吗?

改变

<form method="post" action="{{ route('clients.insert_clients', [$campagne->id, 'importData_arr' => $importData_arr, 'id_campagne' => $campagne->id]) }}">
public function insert_clients($importData_arr, $id_campagne)
对,

您有一个路由定义的必需参数campagne,因此需要在该数据数组中显式传递它。

Change

<form method="post" action="{{ route('clients.insert_clients', [$campagne->id, 'importData_arr' => $importData_arr, 'id_campagne' => $campagne->id]) }}">
public function insert_clients($importData_arr, $id_campagne)
对,


您有一个路由定义的必需参数campagne,因此需要在该数据数组中显式传递它。

您需要用2个参数而不是1个参数定义路由

路由::post'clients/importer/{importData}/{campagne}','CampagneController@upload_clients'->命名'clients.upload_clients';
您需要使用2个参数而不是1个参数来定义路由

路由::post'clients/importer/{importData}/{campagne}','CampagneController@upload_clients'->命名'clients.upload_clients';
我认为你试图以一种非常混乱的方式实现你的目标。首先是你的路线

路由::post'clients/importer/{campagne}','CampagneController@upload_clients' 您正在声明一个单变量campagne,但在控制器中,您将相应的函数声明为

公共函数插入\u客户端$importData\u arr,$id\u campagne 这就是为什么会出现错误,传递的是单个变量$campagne,但控制器的方法需要两个变量$importData\u arr,$id\u campagne

您应该如下更新该方法

公共功能插入\u客户端$campagne 以及您的表格:

@每个$importData\u arr的$value @endforeach 提交表单后,您可以按如下方式恢复数据:

public function insert_clients($campagne) {
   $importData_arr = request()->get('importData_arr');
}

我认为你试图以一种非常混乱的方式实现你的目标。首先是你的路线

路由::post'clients/importer/{campagne}','CampagneController@upload_clients' 您正在声明一个单变量campagne,但在控制器中,您将相应的函数声明为

公共函数插入\u客户端$importData\u arr,$id\u campagne 这就是为什么会出现错误,传递的是单个变量$campagne,但控制器的方法需要两个变量$importData\u arr,$id\u campagne

您应该如下更新该方法

公共功能插入\u客户端$campagne 以及您的表格:

@每个$importData\u arr的$value @endforeach 提交表单后,您可以按如下方式恢复数据:

public function insert_clients($campagne) {
   $importData_arr = request()->get('importData_arr');
}

获取此htmlspecialchars期望参数1为字符串,数组为givenIt,因为$value是数组。在这种情况下,您必须序列化数据或将其编码为JSON并在控制器中解码。否则,请使用另一种策略,如在会话中保存$importData_arr谢谢,我再解释一下我在做什么。我用CSV文件导入数据,我知道怎么做,而且效果很好。但是我做了一个确认页面,上面显示了你导入的数据。我将文件中的数据发送到我的视图,如果用户确认操作,我想将其发送回te控制器。我认为有一个比制作表单并发送其中的变量更好的方法。我应该看看你的代码。。。用户是否可以更新导入的数据?如果没有,那么把它寄回去就没用了。。。只需将其保存在会话或缓存中,在视图中显示数据,控制器就会从会话或缓存中恢复数据。如果是,则有许多解决方案。。。但这不是你想要的,如果没有看到你的代码,很难说。。。所以如果你为它创建一个新的问题会更好。得到这个htmlspecialchars期望参数1是字符串,数组givenIt是因为$value是一个数组。在这种情况下,您必须序列化数据或将其编码为JSON并在控制器中解码。否则,请使用另一种策略,如在会话中保存$importData_arr谢谢,我再解释一下我在做什么。我用CSV文件导入数据,我知道怎么做,而且效果很好。但是我做了一个确认页面,上面显示了你导入的数据。我将文件中的数据发送到我的视图,如果用户确认操作,我想将其发送回te控制器。我认为有一个比制作表单并发送其中的变量更好的方法。我应该看看你的代码。。。用户是否可以更新导入的数据?如果没有,那么把它寄回去就没用了。。。只需将其保存在会话或缓存中,在视图中显示数据,控制器就会从会话或缓存中恢复数据。如果是,则有许多解决方案。。。但这不是你想要的,如果没有看到你的代码,很难说。。。因此,如果你为这个问题提出一个新的问题会更好。
public function insert_clients($campagne, Request $request)
public function insert_clients($campagne) {
   $importData_arr = request()->get('importData_arr');
}