我有一个需要做帖子并获得动作的功能。
我正在创建一个报价系统。客户可以提出要约。此优惠称为$pendingOffer
。工作人员可以接受该提议,当它接受时,数据库行将转移到$offer
表中。 pendingOffer仍在pendingOffer表中。我想删除这个。我使用POST方法将pendingOffer存储到Offer表中。我想使用GET方法删除pendingOffer。我该怎么做?
路线:
Route::post('/create_offer/{request}/{id}', 'RequestOfferController@saveCreateOffer');
我的控制器:
public function saveCreateOffer(RequestOffer $request, RequestOffer $id) {
$data = Request::all();
$offer = new Offer($request->getAttributes());
$offer->save();
for ($i = 0; $i < count($data['products']); $i++) {
$productId = $data['products'][$i];
$productCount = $data['count'][$i];
$start = $data['date'][$i];
$period = $data['per_periode'][$i];
$btw = $data['btw'][$i];
$product = Product::find($productId);
if (!$product) {
$offer->delete();
return back()->withInput()->withErrors(['error' => 'Één van de producten kon niet gevonden worden.']);
}
$offerProduct = new OfferProduct();
$offerProduct->product()->associate($product);
$offerProduct->offer()->associate($offer);
$offerProduct->count = $productCount;
$offerProduct->start_date = Carbon::parse($start);
$offerProduct->btw = $btw;
$offerProduct->period = $period;
$offerProduct->save();
}
$pendingOffer = RequestOffer::find($id);
$pendingOffer->delete();
return redirect('/home');
}
我已尝试使用::find($id)
方法,但这不起作用。我收到这个错误:
MethodNotAllowedHttpException in RouteCollection.php line 251:
答案 0 :(得分:1)
如果它们是不同的请求方法并执行不同的操作,为什么要将它们组合在一个函数/方法中?为每个操作创建一个新路由和新控制器方法。
您可以为帖子添加相同的网址并获取路线文件。
例如:
Route::post('/create_offer/{request}/{id}', 'RequestOfferController@saveCreateOffer');
Route::get('/create_offer/{request}/{id}', 'RequestOfferController@deleteOffer');
虽然对我而言,在此网址上使用GET删除待处理的优惠是没有意义的。您应该使用DELETE请求更合适的URL来删除商品。