嗨,我正在与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
比方说,你在你的应用程序中的这个网址上:http://myapp.com/some-page然后你点击提交按钮,它会把数据发布到这个相对的url:http://myapp.com/some-page/index.php
现在,我们使用URL助手facade的原因是使URL相对于应用程序的URL。
例如,如果您在应用程序配置(或.env(中定义APP_URL
等于http://myapp.com
,那么当您使用以下内容时:URL::to('/insert')
,它将输出以下url:http://myapp.com/insert
,而不管您在哪个url上。
希望这是有道理的。对此:
{{csrf_field()}}
@csrf
我相信他们也做到了,他们生成了一个隐藏的输入字段,其中包含您当前的csrf令牌。