对Laravel中的form :: hid的需求是什么

时间:2018-08-22 19:13:34

标签: php laravel http

我只是想问为什么在Laravel框架中使用form :: hidden(),即很明显,在隐藏方法中您可以放置​​PUT或Delete HTTP请求方法,但是为什么我们不能只使用PUT或DELETE作为表单中的方法。是的,这是不可能的,我已经阅读了很多有关此的文章,但是对于Web开发的初学者而言,尚不清楚。因此,任何人都可以用简单的术语来解释

  

首先

,为什么要在表单中将POST用作http方法,然后在下面使用Form :: hidden('_ method','PUT')。我们是否仅使用PUT覆盖POST。

  

第二

,非常重要的一点是,如果有人尝试用简单的术语来解释为什么HTML中不提供PUT和DELETE而不提供阅读链接。谢谢您的关注

4 个答案:

答案 0 :(得分:1)

  1. Form::hidden('_method','PUT')是在我们使用POST方法的形式之后编写的。它告诉Laravel为该方法执行哪个方法。 laravel的方法很少;任何,发布,获取,放置,删除,修补。

您可以简单地使用POST方法并提交表单。但是,如果要使用资源类型控制器,则应该使用相应的方法。

  1. HTML仅支持get和post方法。默认情况下,html表单方法具有get方法。

答案 1 :(得分:1)

此方法已在HTML5上删除。我也想知道的原因... https://www.w3.org/TR/2010/WD-html5-diff-20101019/#changes-2010-06-24

  

5.1。自2010年6月24日以来的变化

     

基于实现反馈对HTML解析算法进行了大量更改。

     

hidden属性现在适用于与表相关的元素。

     

现在将canvas getContext()方法定义为能够更好地处理多个上下文。

     

媒体元素的startTime IDL属性已重命名为initialTime并添加了startOffsetTime。

     

现在可以在元素上使用预取链接关系。

     

ins和del的datetime属性不再需要指定时间。

     

不再支持将PUT和DELETE用作表单元素的HTTP方法

     

不再使用s元素。

     

视频元素具有新的音频属性。

但是,它们只是从HTML5中删除的,您的服务器仍应能够识别来自HTML4和早期版本的请求。我还没有亲自尝试过,但是逻辑上说它们应该适用于较旧的HTML版本。并且在较旧的版本中不需要这些字段。至少逻辑就是这样。

修改

经过一番调查,似乎就像我以前的声明一样,只是从HTML5中删除是正确的,但事实如此,因为HTML5是唯一考虑过此方法的HTML标准。因此,我所说的可能在以前的版本中使用的说法是错误的。

答案 2 :(得分:1)

“ HTML”表单只有两种方法:获取和发布(包括HTML5)。

也就是说,laravel提出了支持直接从表单中调用丢失的方法 PUTPATCHDELETE的方式。< / p>

1

  

Laravel表单方法欺骗

     

HTML表单不支持PUTPATCHDELETE操作。因此,在定义PUTPATCHDELETE 从HTML表单调用的路由时,您需要添加一个隐藏的_method字段到表格。与_method字段一起发送的值将用作HTTP请求方法   (Laravel Docs

2

HTML标记form是用这种方式定义的。表单数据可以作为URL变量(使用method =“ get”)发送或作为HTTP post transaction(使用method =“ post”)发送。

答案 3 :(得分:0)

Laravel提供了各种操作路线,例如创建,查看,更新和删除。获得Laravel resource controllers来获得创建,编辑,查看和删除所有路由的更简单方法。

我认为,如果您访问Laravel resource controllers documentation,您的疑问将会很明显。通过使用诸如GET, POST, PUT, PATCH and DELETE之类的术语简化了路由操作。您认为HTML不支持PUT/PATCH/DELETE操作这一事实是正确的。但是这些不是HTTP中使用的操作。相反,这是为了简化路线。此过程称为表单欺骗。例如,如果要更新某些内容,则可以使用Form::hidden('method', 'PUT')方法执行表单欺骗(即,让框架知道要更新的内容)。同样,如果要删除某些内容,可以使用Form::hidden('method', "DELETE")