laravel 不支持 put 方法

Posted

技术标签:

【中文标题】laravel 不支持 put 方法【英文标题】:put method not supported in laravel 【发布时间】:2020-09-23 07:14:56 【问题描述】:

我尝试使用编辑路由更新帖子,但是当我发送表单并使用更新功能时,给我一个错误

我的代码是

<form action="/posts$posts->id" method="POST">
@method('PUT')
@csrf
<label for="">title</label>
<input type="text" name="title" class="form-control" >
<label for="">body</label>
<textarea type="text" name="body" class="form-control">$post->body</textarea>
<input type="submit" class="btn btn-primary" value="edit">

【问题讨论】:

分享你的路线 php 工匠路线:列表 您需要将路由定义为Route::put('posts/id', ...) 以使其响应PUT 请求 我正在使用相同的更新路线 如果你使用资源控制器路由,你应该使用action=" route('posts.update', [ 'post' =&gt; $posts-&gt;id ])) " 来确保你得到正确的路由 【参考方案1】:

我把我在 laravel 文档上找到的隐藏方法放了,效果很好

<form action="/posts/$post->id" method="POST">
@csrf
<label for="">title</label>
<input type="text" name="title" class="form-control" >
<label for="">body</label>
<textarea type="text" name="body" class="form-control">$post->body. 
</textarea>
<input type="submit" class="btn btn-primary" value="edit">
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value=" csrf_token() ">
</form>

【讨论】:

【参考方案2】:

您可以执行以下操作:

<form action=" route('route.name', $post->id) " method="POST">
@csrf
<label for="">title</label>
<input type="text" name="title" class="form-control" >
<label for="">body</label>
<textarea type="text" name="body" class="form-control">$post->body</textarea>
<input type="submit" class="btn btn-primary" value="edit">

对于路线:

Route::post('/posts/id', 'Controller@function')->name('route.name');

【讨论】:

【参考方案3】:

你必须这样使用

<form action="url('')/posts/$post->id" method="POST">
@csrf
<label for="">title</label>
<input type="text" name="title" class="form-control" >
<label for="">body</label>
<textarea type="text" name="body" class="form-control">$post->body</textarea>
<input type="submit" class="btn btn-primary" value="edit">

在你的路线中这样使用

Route::post('/posts/id', ...)

【讨论】:

为什么在/posts/ $post-&gt;id 之前需要url('') @TalhaF。这不是强制性的。但写action method href method也是一种方法。【参考方案4】:

您的操作中缺少 / action="/posts/ $posts-&gt;id "

【讨论】:

以上是关于laravel 不支持 put 方法的主要内容,如果未能解决你的问题,请参考以下文章

此路由不支持 PUT 方法。 Vue/laravel

此路由不支持 PUT 方法。支持的方法:GET、HEAD、POST。在 laravel 中

laravel向我显示此错误此路由不支持POST方法。支持的方法:GET,HEAD,PUT,DELETE

此路由不支持 GET 方法。支持的方法:PUT。与放置形式。拉拉维尔

REST - HTTP 状态 405;方法不允许;请求方法“PUT”不支持错误

HTTP 状态 405 - 不支持请求方法“PUT”