为什么用我收到GET请求的PUT方法提交表单?

时间:2018-12-07 15:48:45

标签: laravel-5

在laravel 5.7应用程序中,我制作了用于更新数据的表格,例如:

<section class="card-body">
    <h4 class="card-title">Edit vote</h4>


    <form method="PUT" action="{{ url('/admin/votes/update/'.$vote->id) }}" accept-charset="UTF-8" id="form_vote_edit" class="form-horizontal"
          enctype="multipart/form-data">
        {!! csrf_field() !!}
        <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">

其中的路由在routes / web.php中被禁用:

Route::group(['middleware' => ['auth', 'isVerified', 'CheckUserStatus'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    ...
    Route::put('/votes/update/{vote_id}', 'Admin\VotesController@update');

但提交我收到的请求时出现错误的表格:

Request URL: http://local-votes.com/admin/votes/update/22?_token=0CEQg05W4jLWtpF3xB6BGSdz1icwysiDOStLVgHv&id=22&name=gg...
Request Method: GET
Status Code: 405 Method Not Allowed

为什么要GET请求,我的表单有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

HTML表单仅支持GETPOST

从文档中

  

由于HTML表单无法发出PUT,PATCH或DELETE请求,因此您将   需要添加一个隐藏的_method字段来欺骗这些HTTP动词。

您可以使用method_field帮助器或@method刀片指令添加隐藏的输入。

<form action="/foo/bar" method="POST">
    @method('PUT')
    ...
</form>

<form action="/foo/bar" method="POST">
    {{ method_field('PUT') }}
    ...
</form>