【发布时间】:2019-05-15 01:09:24
【问题描述】:
根据我的研究,此错误与路由错误有关。无论我在更新函数中使用什么代码,都会引发此错误,这是有道理的。
但是我相信我所有的路线/表格都是正确的:
web.php
Route::get('orders/edit/{order}', 'OrderController@edit')->name('orders.edit');
Route::patch('orders/update', 'OrderController@update')->name('orders.update');
OrderController.php
public function edit(Order $order)
{
$user = Auth::user();
$meals = DB::table('products')
->leftJoin('order_product', function ($join) use ($order) {
$join->on('products.id', '=', 'order_product.product_id')
->where('order_product.order_id', '=', $order->id);
})
->select('products.*', 'order_product.qty')
->get();
return view('orders.edit', compact('order', 'products', 'meals'));
}
public function update(Request $request,Order $order)
{
//doesnt seem to matter what is in here but this is my return
return redirect()->route('orders.checkout', $order->id);
}
edit.blade.php
{!! Form::open(['route' => 'orders.update', 'method' => 'patch']) !!}
{{ Form::text('coupon', $order->coupon) }} // sample of an input I am using
{{ Form::submit('Place Order') }}
{!! Form::close() !!}
更新
根据@rpm192 的建议,我尝试了:
{!! Form::open(['action' => ['orders.update', $order->id], 'method' => 'patch']) !!}
但是当加载 edit.blade.php 时,它抛出了我......
Action App\Http\Controllers\orders.update not defined. (View: /Users/now/Public/keto/resources/views/orders/edit.blade.php)
所以我然后尝试...
{!! Form::open(['action' => ['OrderController@update', $order->id], 'method' => 'patch']) !!}
但这让我很不爽……
Too few arguments to function App\Http\Controllers\OrderController::update(), 1 passed and exactly 2 expected
假设这是正确的方法,因为我现在越来越接近解决方案,它在寻找什么额外的参数?
【问题讨论】:
-
尝试将:
'route' => 'orders.update'更改为:'action' => ['orders.update', $order->id] -
@rpm192,我尝试了你的建议,并用我的结果更新了我的问题。
-
HTML 表单不支持 put/patch/delete 方法,因此您必须欺骗它们:
-
你能从你的控制器中添加
edit方法/函数吗? -
@rpm192,我已将
edit方法添加到我的问题中。 @brad,这应该由我正在使用的 Laravel Collective 包中的'method' => 'patch'处理。
标签: laravel laravel-5 laravel-routing