(1/1) ErrorException
Argument 2 passed to App\Http\Controllers\priceDetails::finalSubmit() must be an instance of Illuminate\Http\Request, none given
使用控制器功能传递多个参数时出错。
Ajax代码:
<script type="text/javascript">
$(document).ready(function () {
$('#finalSubmit').click(function() {
var form1 = $('#priceform').serialize();
var form2 = $('#formdescription').serialize();
var form3 = $('#additionaldescription').serialize();
$.ajax({
url:"{{url('dbvalue')}}",
type: 'GET',
data: {form1: form1, form2: form2, form3: form3},
dataType:'json',
success:function(data){
alert(data);
}
});
});
});
</script>
Laravel路线:
Route::get('dbvalue','priceDetails@finalSubmit');
控制器:
public function finalSubmit(Request $priceform,Request $formdescription)
{
$var1 = $this->addPriceDetails($priceform);
$var2 = $this->addProductDetails($formdescription);
$var3 = $this->addAdditionalInformation($additionaldescription);
$var4 = $this->addImages($imagesform);
echo("success");
}
这就是我试图在laravel控制器函数中给出多个表单参数。
addPriceDetails fn:
public function addPriceDetails(Request $priceform)
{
$priceInfo = new priceInfo ;
$priceInfo->id=$this->getpriceDetailsId();
$priceInfo->SKUID=$priceform->input('skuid');
$priceInfo->deviceCategoryId=$priceform->input('dataId');
$id=$priceInfo->id;
$priceInfo->save();
return response()->json([
'SKUID' => $priceInfo->SKUID,
'sellingPrice' => $priceInfo->sellingPrice,
'id' =>$this->getpriceDetailsId()
]);
}
答案 0 :(得分:1)
您尝试做的事情根本不起作用。仅仅因为您在 1 ajax请求中发送了两个表单的数据并不意味着laravel会将其作为两个请求进行解释。这根本不可能。
您在代码中所做的是从3个表单获取数据并从中生成json对象,并在 1 get request 中发送该json对象。您无法在1个请求中发送多个请求。这是最基本的。
获得所需结果的最佳方法是在您的控制器中接受1个请求对象并解析它以从您发送的多个表单中获取数据。
答案 1 :(得分:1)
您需要将您的功能设为
public function finalSubmit(Request $request)
{
$var1 = $this->addPriceDetails($request->form1);
$var2 = $this->addProductDetails($request->form2);
$var3 = $this->addAdditionalInformation($request->form3);
//$var4 = $this->addImages($imagesform);//you dont't have $imagesform
return response()->json(["response"=>"success"]);
}
同时将http动词从GET
更改为POST
type: 'POST', //in ajax, it is good send bulk data in post not in get
路线
Route::post('/dbvalue','priceDetails@finalSubmit');