我想通过Laravel Form编辑我的数据库。编辑确实有效但当我想更新数据库时,它显示以下错误。
RouteCollection.php第219行中的MethodNotAllowedHttpException:
这是我的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Course;
class courseController extends Controller
{
public function index()
{
$alldata=Course::all();
return view('course.index',compact('alldata'));
}
public function create()
{
return view('course.create');
}
public function store(Request $request)
{
$input = $request->all();
Course::create($input);
return redirect('course');
}
public function show($id)
{
//
}
public function edit($id)
{
$course=Course::findOrFail($id);
return view('course.edit',compact('course'));
}
public function update(Request $request, $id)
{
$input = $request->all();
$data=Course::findOrFail($id);
$data->update($input);
return redirect('course');
}
public function destroy($id)
{
$data=Course::findOrFail($id);
$data->delete($input);
return redirect('course');
}
}
这是我的编辑页面:
<html>
<head>
<title> Update Course </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" >
<h3> Update course </h3>
{!! Form::open(array('route' =>['course.update',$course->course_id],'class'=>'form-horizontal')) !!}
{!! Form::token(); !!}
<?php echo csrf_field(); ?>
<div class="form-group">
<label >Course Code</label>
<input type="text" name="course_code" class="form-control" value="{{$course->course_code}}">
</div>
<div class="form-group">
<label >Course Title</label>
<input type="text" name="course_title" class="form-control" value="{{$course->course_title}}">
</div>
<div class="form-group">
<label>Course Credit</label>
<input type="text" name="course_credit" class="form-control" value="{{$course->course_credit}}">
</div>
<button type="submit" class="btn btn-default">Update</button>
{!! Form::close() !!}
</div>
</body>
</html>
这是路线:
<?php
Route::resource('course','courseController');
Route::group(['middleware' => ['web']], function () {
});
如果有人能解决问题,请帮助。
答案 0 :(得分:1)
当您尝试编辑时,您需要根据此link添加方法类型。
指定不同的方法
您可以在表单中使用POST以外的方法。通过'方法' 你想要在数组参数。有效的方法是'get','put', 'patch','post'或'delete'。
因此,在您的情况下,您需要将'method' => 'patch'
添加到Form::open..
因此,您在刀片中的最终代码将如下所示:
{!! Form::open([
'method' => 'PATCH',
'route' => ['course.update',$course->course_id],
'class'=>'form-horizontal'
]) !!}
<强>附加强>
我可以看到你正在使用像<?php echo csrf_field(); ?>
这样的php标签,我假设你在Laravel中知道你可以使用相同的{{ csrf_field() }}
,但由于我对你的代码没有深入的了解,所以它留下了给你。