html - Laravel 形成 HTML 表单和令牌的最佳方式
问题描述
嗨,我正在与 Laravel 合作,我有一个关于 . 回到过去,当我们想要提交数据时,我们曾经写过类似以下的内容。
<form action="insert.php" method="POST"> </form>
现在,我在 Youtube 视频和 stackoverflow 中看到了许多代码片段,我们使用以下代码:
<form action="{{URL::to('/insert')}}" method="POST">
我想知道有什么区别?第二种方式 /insert 是指向文件还是控制器?第一个错了?或者它只是一种替代的旧时尚方式?
我还看到了两种插入令牌的方法。哪个是最好的?有什么区别?两者工作相同?如果我不插入令牌会怎样?
{{csrf_field()}}
@csrf
感谢您的时间!
解决方案
好吧,当你这样做时:
<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 令牌。
推荐阅读
- .net - 出于某种原因,“大”尝试块的性能是否不如较小的块?
- r - 在 R 中编写一个函数来将新行绑定到数据帧
- json - 使用角度中的rxjs在两个json对象之间替换值
- python - 删除单行 MySQL 表时如何修复“超过锁定等待超时”?
- c# - 如何使用 StorageFolder 从自定义文件夹或位置读取文本文件?
- php - 仅循环浏览已填写自定义字段的帖子
- c# - where Linq 子句是否区分大小写?
- android - 在带有支持库的项目中反向 Jetifier 与 AndroidX 的依赖关系
- azure-devops - 使用来自多个存储库的 YAML 模板
- reactjs - 如何使用受保护的路线与 passport.js 做出反应