首页 > 解决方案 > Laravel 形成 HTML 表单和令牌的最佳方式

问题描述

嗨,我正在与 Laravel 合作,我有一个关于 . 回到过去,当我们想要提交数据时,我们曾经写过类似以下的内容。

<form action="insert.php" method="POST"> </form>

现在,我在 Youtube 视频和 stackoverflow 中看到了许多代码片段,我们使用以下代码:

<form action="{{URL::to('/insert')}}" method="POST">

我想知道有什么区别?第二种方式 /insert 是指向文件还是控制器?第一个错了?或者它只是一种替代的旧时尚方式?

我还看到了两种插入令牌的方法。哪个是最好的?有什么区别?两者工作相同?如果我不插入令牌会怎样?

{{csrf_field()}}
@csrf

感谢您的时间!

标签: htmllaravelformssecuritytoken

解决方案


好吧,当你这样做时:

<form action="insert.php" method="POST"> </form>

您正在做的是明确告诉 html 标记发布数据的相对路径,在您的情况下为index.php

比如说,你在你的应用程序的这个 url 上:http: //myapp.com/some-page并且你点击了提交按钮,会发生什么是将数据发布到这个相对 url:http://myapp.com/some-page/index.php

现在,我们使用 URL 辅助门面的原因是使 url 相对于应用程序的 url。

例如,如果您在应用程序配置(或 .env)中定义APP_URL等于 ,http://myapp.com那么当您使用 this 时:URL::to('/insert')它将输出以下 url:http://myapp.com/insert- 无论您在哪个 url 上。

希望这是有道理的。至于这个:

{{csrf_field()}}
@csrf

我相信他们也能做到这一点,他们会生成一个隐藏的输入字段,其中包含您当前的 csrf 令牌。


推荐阅读