Laravel 5 "Custom" 表单方法
Laravel 5 "Custom" Form Methods
正在尝试使用 PATCH 请求发送此表单
<form method="POST" action="...">
<input type="hidden" name="_method" value="PATCH">
但我的路由方法设置为 PATCH 时运气不佳,但如果我手动更改表单方法,这确实有效。这在 L5 中不再有效吗?
--
呃,没关系,它工作正常。弄乱了我的路由,将我的表单指向 /users 而不是 /users/[id]
只要您不搞砸路由名称,补丁请求就可以正常工作:)
有趣的是,另一种选择是使用辅助函数 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()
需要一个参数,它是一个字符串,表示您的 "custom method" 的值。所以这通常是 PUT
、PATCH
或 DELETE
。还要确保您仍然将表单设置为表单 html 标记中的 POST
方法。所有这些自定义方法实际上只是伪装的 POST
方法,因此您需要在表单标记中这样设置它。
因此,当 blade 呈现此文件时,您生成的页面源将如下所示:
<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') }}
我只是想把它扔给新手,因为它更容易处理,而且没有很好的记录。
正在尝试使用 PATCH 请求发送此表单
<form method="POST" action="...">
<input type="hidden" name="_method" value="PATCH">
但我的路由方法设置为 PATCH 时运气不佳,但如果我手动更改表单方法,这确实有效。这在 L5 中不再有效吗?
--
呃,没关系,它工作正常。弄乱了我的路由,将我的表单指向 /users 而不是 /users/[id]
只要您不搞砸路由名称,补丁请求就可以正常工作:)
有趣的是,另一种选择是使用辅助函数 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()
需要一个参数,它是一个字符串,表示您的 "custom method" 的值。所以这通常是 PUT
、PATCH
或 DELETE
。还要确保您仍然将表单设置为表单 html 标记中的 POST
方法。所有这些自定义方法实际上只是伪装的 POST
方法,因此您需要在表单标记中这样设置它。
因此,当 blade 呈现此文件时,您生成的页面源将如下所示:
<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') }}
我只是想把它扔给新手,因为它更容易处理,而且没有很好的记录。