如何解决Laravel 5.0上RouteCollection.php中MethodNotAllowedHttpException的问题?
我有一个表单请求更新数据库中的数据 我的控制器如何解决Laravel 5.0上RouteCollection.php中MethodNotAllowedHttpException的问题?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个表单请求更新数据库中的数据 我的控制器 public function edit($id) { // $pinjaman = Pinjaman_Tanker::where('no_admin', $id)->firstOrFail(); return view('pinjaman.edit')->with('pinjaman', $pinjaman); } public function update
public function edit($id)
{
//
$pinjaman = Pinjaman_Tanker::where('no_admin', $id)->firstOrFail();
return view('pinjaman.edit')->with('pinjaman', $pinjaman);
}
public function update(Request $request, $id)
{
//
$pinjaman = Pinjaman_Tanker::where('no_admin', $id)->firstOrFail();
$validation = Validator::make($request->all(),[
"tgl_input_pinjam" => "required|date",
"no_anggota" => "required",
"jumlah" => "required",
"kebutuhan" => "string|required",
"angsuran" => "required",
"termin" => "required"
]);
if ($validation->fails()){
return redirect()->back()->withErrors($validation->errors())->withInput();
}
$pinjaman -> tgl_input_pinjam = date('Y-m-d', strtotime($request->get('tgl_input_pinjam')));
$pinjaman -> kebutuhan = $request -> get('kebutuhan');
$pinjaman -> jumlah = preg_replace('/(?:[.]|\,00)/', '$1', $request->get('jumlah'));
$pinjaman -> angsuran = preg_replace('/(?:[.]|\,00)/', '$1', $request->get('angsuran'));
$pinjaman -> termin = $request -> get('termin');
$pinjaman -> save();
return redirect(url('pinjaman'));
}
路线
景色
<form id="edit_pinjaman" method="post" action="{{url('pinjaman/'.$pinjaman->no_admin.'')}}" enctype="multipart/form-data">
<input type="hidden" name="_method" value="put">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
在我点击提交按钮后,它没有重定向到“pinjaman”,而是显示带有以下错误的表单:
RouteCollection.php第207行中的MethodNotAllowedHttpException:
在RouteCollection.php第207行中
在RouteCollection.php第194行中的RouteCollection->methodNotAllowed(数组('PUT'))处
在RouteCollection.php第142行的RouteCollection->getRouteForMethods(对象(请求)、数组('PUT'))中
在Router.php第729行的RouteCollection->match(对象(请求))处
在Router.php第652行的Router->findulote(对象(请求))处
在Router.php第628行的Router->dispatchToRoute(对象(请求))处
在Kernel.php第214行的Router->dispatch(object(Request))处
等等
我已经遵循了Laravel5.0官方文档中的指南,并在互联网上做了一些研究。但这种错误一直在发生
我如何解决这个问题
谢谢将路线更改为:
Route::post('pinjaman/{no_admin}/{id?}', 'Pinjaman\PinjamanController_Tanker@update');
因为您的表单方法是POST
<form id="edit_pinjaman" method="post"
将路线更改为:
Route::post('pinjaman/{no_admin}/{id?}', 'Pinjaman\PinjamanController_Tanker@update');
因为您的表单方法是POST
<form id="edit_pinjaman" method="post"
因为你的控制器公共函数edit($id),所以你的路径必须是pinjaman/{no_admin}/edit/{id?},真正的url必须是pinjaman/{no_admin}/edit/1->将你的id帖子添加到表单的操作中你能在代码中给出“将你的id帖子添加到表单的操作中”的例子吗?我已经编辑了我的答案,很抱歉,我没有仔细阅读您的问题。根据此官方文档,HTML表单不支持put、patch和delete方法。这就是为什么我使用post作为方法,并使用方法欺骗来欺骗它。但是没用,谢谢你。我测试了你的链接,看到oke:(因为你的控制器公共函数是edit($id),所以你的路由必须是pinjaman/{no_admin}/edit/{id?},真正的url必须是pinjaman/{no_admin}/edit/1->将你的id帖子添加到表单的操作你能举个“将你的id帖子添加到表单的操作”的例子吗在代码中?我已经编辑了我的答案,很抱歉,因为我没有仔细阅读您的问题。根据此官方文档,HTML表单不支持put、patch和delete方法。这就是为什么我使用post as方法并使用方法欺骗来欺骗它。但它不起作用。谢谢。我测试了您的链接,并看到OK:(redirect()->back())
issue。在If条件中,有redirect()->back()创建问题,因为没有创建“GET”请求路由。和“redirect()->back()函数调用GET request。redirect()->back()
issue。在If条件中,有redirect()->back()创建问题,因为没有创建“GET”请求路由。和“redirect())->back()函数调用GET请求。