如何将两种形式作为参数传递给 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->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)