我是laravel的新手。。。创建了一个路由,并为其提供了一个控制器,该控制器具有更新数据库的方法。。但一旦它读取了路线,应用程序就无法到达控制器
Route::post('/workorder/store/third/{$id}',
[
'uses'=>'WorkOrdersController@storeThird',
'as'=>'workorder.store.third'
]);
//method in WorkOrderController
public function storeThird(Request $request,$id)
{
$this->validate($request,[
'address_region'=>'required|string',
'address_no'=>'required|string',
]);
$workorder = WorkOrder::find($id);
$workorder->address_region = $request->address_region;
$workorder->address_no = $request->address_no;
$workorder->save();
return view('third-workorder',compact('workorder'));
}
浏览器中的结果。。。在地址栏中。。"http://localhost:8000/workorder/store/third/9"以及在浏览器中。。"对不起,找不到您要查找的页面。">
这个。。view.blade看起来像
<div class="modal" id="createThirdWorkshopModal">
<div class="modal-dialog">
<div class="modal-content">
<form method="POST" action="{{ route('workorder.store.third',['id'=>$workorder->id]) }}" >
{{ csrf_field() }}
在浏览器中直接导航到http://localhost:8000/workorder/store/third/9
是一个GET
请求,但您已将路由定义为处理POST
要求的路由。你需要提交一些东西才能"找到"该路线:
<form method="POST" action="{{ url("/workorder/store/third/".$id) }}" ...>
...
</form>
或将路线定义为
Route::any("/workorder/store/third/{$id}", ...);
来处理这个问题。
注意:::any()
处理所有HTTP谓词(GET
、POST
、PUT
、DELETE
等(
Router::post('/workorder/store/third/{$id}', WorkOrdersController@storeThird)->name('workorder.store.third');
和用途:
<a href="{{route('workorder.store.third', $id)}}">
...
</a>