如何在laravel中传递多个表单作为参数?

时间:2017-09-09 06:55:31

标签: php jquery ajax laravel-5.4

(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() 
  ]);

}

2 个答案:

答案 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');