在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请求,我的表单有什么问题?
谢谢!
答案 0 :(得分:3)
HTML表单仅支持GET
和POST
。
从文档中
由于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>