2016-02-29 187 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

歡迎您光臨 –