如何将两种形式作为参数传递给 laravel 控制器?

Posted

技术标签:

【中文标题】如何将两种形式作为参数传递给 laravel 控制器?【英文标题】:How to pass two forms as parameter to laravel controller? 【发布时间】:2018-01-29 04:18:07 【问题描述】:

Laravel 控制器代码:

public function addPriceDetails(Request $priceform,$dataId)

$priceInfo = new priceInfo ;
$priceInfo->deviceCategoryId=$dataId;
$priceInfo->productId=$this->getproductId();
$priceInfo->SKUID=$priceform->input('skuid');
$priceInfo->productName=$priceform->input('productName');
$priceInfo->listingStatus =$priceform->input('listingStatus');
$priceInfo->MRP =$priceform->input('mrp');
$priceInfo->sellingPrice=$priceform->input('selprice');
$priceInfo->fulfillmentBy =$priceform->input('fulfillment');
$priceInfo->procurementType =$priceform->input('procurementType');
$priceInfo->procurementSLA =$priceform->input('sla');
$priceInfo->stock =$priceform->input('stock');
$priceInfo->localDelCharge =$priceform->input('local');
$priceInfo->zonalDelCharge =$priceform->input('zonal');
$priceInfo->nationalDelCharge=$priceform->input('national');
$priceInfo->packWeight =$priceform->input('weight');
$priceInfo->packLength =$priceform->input('length');
$priceInfo->packBreadth =$priceform->input('breadth');
$priceInfo->packHeight =$priceform->input('height');
$priceInfo->HSN =$priceform->input('hsn');
$priceInfo->save();

return response()->json([
    'SKUID'    => $priceInfo->SKUID,
    'listingStatus' => $priceInfo->listingStatus,
    'MRP' => $priceInfo->MRP,
    'sellingPrice' => $priceInfo->sellingPrice
]);

这是我为其中一种形式添加值的函数。

第二种形式的控制器代码:

  public function addProductDetails(Request $formdescription,$dataId)
  
   $description=new productDescription;
   $description->deviceCategoryId=$dataId;
   $description->productDescriptionId=$this-
   >getproductDescriptionId();
   $description->modelName=$formdescription->input('mname');
   $description->Height=$formdescription->input('height');
   $description->Weight=$formdescription->input('weight');
   $description->Depth=$formdescription->input('depth');
   $description->Width =$formdescription->input('width');
   $description->Type =$formdescription->input('type');
   $description->Character=$formdescription->input('character');
   $description->batteryType=$formdescription->input('batteryType');
   $description->salesPackage =$formdescription->input('package');
   $description->skillSet =$formdescription->input('skillSet');
   $description->Colour=$formdescription->input('colour');
   $description->Material =$formdescription->input('material');
   $description->maxAge=$formdescription->input('maxage');
   $description->minAge =$formdescription->input('minage');
   $description->batteryNos =$formdescription->input('batteryNos');
   $description->batteryOperated=$formdescription-
   >input('batteryOperated');
  $description->rechargable=$formdescription->input('rechargable');

   $description->save();



 return response()->json([
    'modelName'    => $formdescription->mname,
    'colour' => $formdescription->colour,
    'rechargable' => $formdescription->rechargable,
    'batteryType' => $formdescription->batteryType
]);

 $description->product()->associate($priceInfo);

这是我添加另一个表单值的另一个函数。但是在这里我使用 product_Id 值是一个外键值,我需要在添加表单之前获取它。我不知道如何获取它。 否则如果我这样做会很有帮助在一个函数中传递两个表单值。

脚本代码:

    <script src = 
   "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
    </script>
  <script type="text/javascript">

   $(document).ready(function () 

   $("#priceSave").click(function(e)
    e.preventDefault();
    var form1 = $('#priceform').serialize();
   //alert(form1);
   $.ajax(
    url:'addPriceDetails/$dataId',
    type: "get",
    data: form1,
    dataType: 'json',
    success: function(response) 
      //alert(response.SKUID);
        $("#skuid").append(response.SKUID); 
        $("#mrp").append(response.MRP);       
        $("#lstatus").append(response.listingStatus); 
        $("#selprice").append(response.sellingPrice); 
      
      );
      );



  $("#descSave").click(function(e)
   e.preventDefault();
   var form2 = $('#formdescription').serialize();
   alert(form2);
   $.ajax(
     url:'addProductDetails/$dataId',
    type: "get",
    data: form2,
    dataType: 'json',
    success: function(response) 
      //alert(response);
        $("#batterytype").append(response.batteryType); 
        $("#modelname").append(response.modelName);    
        $("#colour").append(response.colour); 
       // $("#colour").append(response.Colour); 
        $("#rechargable").append(response.rechargable); 
        //alert(response.Material);
        //alert(response.salesPackage);
      
     );
     );


     );
     </script>

【问题讨论】:

【参考方案1】:

你应该试试这个:

return response()->json([
  'SKUID' => $priceInfo->SKUID,
  'listingStatus' => $priceInfo->listingStatus,
  'MRP' => $priceInfo->MRP,
  'sellingPrice' => $priceInfo->sellingPrice,
  'id' =>$this->getproductId()
]);

【讨论】:

【参考方案2】:

在数据库中插入一个新的产品详细信息,您可以获得插入的产品 ID。保存后写语句$productID = $description-&gt;id;

【讨论】:

hellooo..有人吗?【参考方案3】:

Laravel 缓存你的对象和它们的值。我假设您已经定义了与产品详细信息和价格详细信息的关系。只需通过 $product->description()->save($productInfo); 不久之后 $product->pricing()->save($description);

为此,您必须在产品模型中有两个函数,名为 description() 和定价(),它们将定义它们与产品的关系。就像吃饭一样容易。还要定义一个可填充数组,你正在做的事情很奇怪。

【讨论】:

public function product() return $this->belongsTo(priceInfo::class); 公共函数 productDetails() return $this->hasMany(priceInfo::class); 这些是 pricedetails 和产品描述之间定义的关系 您是否尝试过以 $product->relation-name()->save($the-related-variable) 的方式使用这些函数??? 不,我对你的变量命名有些困惑

以上是关于如何将两种形式作为参数传递给 laravel 控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 返回数据作为参数传递给 URL 路由(laravel)

如何将参数传递给 Laravel 包中的控制器操作?

如何将参数传递给 Laravel 5 中的隐式控制器?

如何使用 Laravel 任务调度将参数传递给命令

在 Laravel 5.2 中将页面 URL 参数传递给控制器

在 Laravel 5 中将多个参数传递给控制器