路由无法运行控制器



我是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谓词(GETPOSTPUTDELETE等(

Router::post('/workorder/store/third/{$id}', WorkOrdersController@storeThird)->name('workorder.store.third');

和用途:

<a href="{{route('workorder.store.third', $id)}}">
...
</a>

最新更新