2016-02-29 150 views
1

我想通过Laravel窗体编辑我的数据库。编辑工作,但当我想更新数据库它显示以下错误。数据库无法通过Laravel更新

MethodNotAllowedHttpException在RouteCollection.php行219:

这里是我的控制器:

<?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

使用重定向;在你的控制器 –

+0

在哪里重定向? – Hola

+0

在语句下面使用App \ Course; –

回答

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() }}这是平等的,但因为我没有深入的关于你的代码的知识,所以它留给你。

+0

谢谢你。 :) – Hola

+0

欢迎您光临 –