Laravel中html形式的更新方法

时间:2018-09-18 10:58:44

标签: laravel

我正在尝试使用laravel中的html表单更新输入:

 <form  action="{!! route('users.update',['id' => $users->id]) !!}" method="post">

            <div class="form-group row">
                <label for="colFormLabelLg" class="col-sm-3 col-form-label col-form-label-lg">customer_name</label>
                <div class="col-sm-10">
                    <input  value="{{$name}}" class="form-control form-control-lg"  placeholder="col-form-label-lg">
                </div>
  <button type="submit" class="btn btn-primary btn-lg"  > Edit</button>


            </form>

控制器中的所有功能均正常运行,但是在视图页面中我收到此错误:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 没有消息

我在做什么错了?

4 个答案:

答案 0 :(得分:0)

请以POST的形式更正您的路线,

Route::post('update/{id}', 'YourController@update')->name('users.update');

答案 1 :(得分:0)

您需要在发布数据时欺骗该方法。由于HTML表单无法发出PUT, PATCH, or DELETE请求,因此您需要添加一个隐藏的_method字段来欺骗这些HTTP动词。 @method Blade指令可以像这样为您创建此字段:

<form action="/foo/bar" method="POST">
    @method('PUT') //add this to your form
</form>

<form action="/foo/bar" method="POST">
        {{ method_field('patch')}} //add this to your form
</form>

答案 2 :(得分:0)

您需要在表单视图中放入@csrf@method('PATCH')

答案 3 :(得分:0)

我遇到了同样的问题,并且在代码中添加了几行后就可以使用它了:

  1. 只需使用$ users-> id而不是将其作为数组['id'=> $ users-> id]
  2. 使用csrf并通过添加@method('PUT')欺骗方法

您的代码应如下所示:

<form  action="{!! route('users.update', $users->id) !!}" method="post">
    @csrf
    <!--Some fields-->
    @method('PUT')
</form>