【问题标题】:Database couldn't update through Laravel数据库无法通过 Laravel 更新
【发布时间】:2016-06-12 01:39:01
【问题描述】:

我想通过 Laravel 表单编辑我的数据库。编辑确实有效,但是当我想更新数据库时,它显示以下错误。

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 () {

});

如果有人能解决这个问题,请帮忙。

【问题讨论】:

  • 使用重定向;在你的控制器中
  • 语句下方使用App\Course;
  • 仍然显示同样的错误
  • 只是为了了解一切正常,只有当您尝试更新时才会收到错误?
  • 是的。尝试更新时出现错误

标签: php laravel laravel-5 laravel-5.2


【解决方案1】:

当您尝试编辑时,您需要根据此link 添加方法类型。

指定不同的方法

您可以在表单中使用 POST 以外的方法。通过“方法” 你想要在数组参数中。有效的方法是'get'、'put'、 “补丁”、“发布”或“删除”。

因此,在您的情况下,您需要将 'method' =&gt; 'patch' 添加到您的 Form::open..

所以你在刀片中的最终代码将如下所示:

{!! Form::open([
    'method' => 'PATCH',
    'route' => ['course.update',$course->course_id],
    'class'=>'form-horizontal'
]) !!}

额外 我可以看到你正在使用像 &lt;?php echo csrf_field(); ?&gt; 这样的 php 标签,我假设你知道在 Laravel 中你可以使用 {{ csrf_field() }} ,但由于我对你的代码没有深入的了解,所以它留给你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多