数据库无法通过Laravel进行更新

时间:2016-02-29 05:13:10

标签: php laravel laravel-5 laravel-5.2

我想通过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 () {

});

如果有人能解决问题,请帮助。

1 个答案:

答案 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() }},但由于我对你的代码没有深入的了解,所以它留下了给你。