尝试使用PATCH请求发送此表单
<form method="POST" action="...">
<input type="hidden" name="_method" value="PATCH">
但我的路由方法设置为PATCH没有运气,但是如果我手动更改表单方法,这确实有效。这不再适用于L5吗?
-
嗯,没关系,它工作得很好。搞砸了我的路由,将我的表单指向/ users而不是/ users / [id]答案 0 :(得分:1)
只要您没有搞砸您的路线名称,补丁请求就可以正常工作:)
答案 1 :(得分:0)
有趣的另一个选择是使用辅助函数method_field()
,它将自动为您创建_method
字段。它看起来很干净,并且更容易和更快地输入(IMO)。
一个例子是这样的:
<form action="{{route('posts.update', $post->id)}}" method="POST">
{{ csrf_field() }}
{{ method_field('PUT') }}
<input type="text">
</form>
正如您所看到的,还有另一个名为csrf_field()
的助手,它也会创建必要的csrf隐藏字段。
method_field()
需要一个参数,该参数是一个表示“自定义方法”值的字符串。因此,这通常是PUT
,PATCH
或DELETE
。另外,请确保您仍然将表单设置为html标记形式的POST
方法。所有这些自定义方法实际上只是伪装的POST
方法,因此您需要在表单标记中设置它。
因此,当刀片呈现此文件时,生成的页面源将如下所示:
<form action="http://localhost:8000/posts/1" method="POST">
<input type="hidden" name="_token" value="Fe16wD6lkMmWDYyoUkGaYPzzcf7wHm58eKs3P6YU">
<input type="hidden" name="_method" value="PUT">
<input type="text>
</form>
这是实现相同结果的另一种方式。但对我来说,我更喜欢我的表格易于阅读:
{{ csrf_field() }}
{{ method_field('PUT') }}
我只想把它扔给那些新手,因为它更容易处理,而且没有很好的记录。