缺少 [Route: admin.status-order.update] [URI: admin/status-order/{status_order}] [缺少参数:status_order] 的必需参数。
我不明白错误在哪里,这是我的控制器:
public function show(Order $order)
{
$data = DB::table('order_menu')
->join('menus', 'menus.id', '=', 'order_menu.menu_id')
->join('orders', 'orders.id', '=', 'order_menu.order_id')
->select('orders.*', 'menus.name', 'order_menu.quantity')
->where('orders.id', $order->id)
->get();
return view('admin.status-order.edit')->with([
'order' => $order,
'data' => $data,
]);
}
public function update(Request $request, Order $order)
{
$order->status = $request->status;
$order->save();
return redirect()->route('admin.status-order.index');
}
对于 edit.blade.php :
<form action="{{ route('admin.status-order.update', $order) }}" method="POST">
@csrf
{{ method_field('PUT') }}
<h6 style="text-align: center; font-size: 18px">Order #{{ $order->order_number }}</h6>
<div class="form-group row">
<label for="staticEmail" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" id="name" required value="">
</div>
</div>
<button type="submit" class="btn btn-secondary" style="margin-top: 20px; width: 100%">Submit</button>
</form>
对于路线:
Route::namespace("App\Http\Controllers\Admin")->prefix("admin")->name("admin.")->middleware('can:adminpage')->group(function () {
Route::resource("/status-order", OrderStatusController::class);
});
答案 0 :(得分:-1)
你可以试试这个代码。您有资源路由和更新方法需要 $id
参数。我已将一个 id
参数传递给您的视图并用于 form
操作。看下面的代码
show
函数有参数,但我有名为 id
的新参数。
public function show(Order $order)
{
.
.
.
return view('admin.status-order.edit')->with([
'order' => $order,
'data' => $data,
'id' => $order->id
]);
}
在 id
操作中使用 form
并在输入标签中设置 order->status
值。看下面的代码
<form action="{{ route('admin.status-order.update', $id) }}" method="POST">
@csrf
{{ method_field('PUT') }}
......
......
<div class="col-sm-10">
<input type="text" class="form-control" name="status" id="name" required value="{{ $order->status }}">
</div>
</div>
<button type="submit" class="btn btn-secondary" style="margin-top: 20px; width: 100%">Submit</button>
</form>
现在,当您提交表单时,update
方法将根据资源路径获取 $id
参数并更新您的表格。
public function update(Request $request, $id)
{
try {
Order::where('id', $id)->update(['status' => $request->status]);
return redirect()->route('admin.status-order.index');
} catch (\Throwable $th) {dd($th->__toString());
throw $th;
}
}
但在您的情况下 status_order
未找到。因此,您必须设置一条新路线并传递一个参数 status_order
。见下文
Route::put('/status-order-update/{status_order}', OrderStatusController@update)->name('status.order.update');
。
更新方法类似于 public function update(Request $request, $statusOrder)
Form
在刀片中就像 action={{ route('status.order.update', ['status_order' => $order->status])}}
。
如果有帮助,请评论。