imp*_*335 12 php laravel laravel-4
我目前正在学习Laravel并发现它非常有用和有趣.
目前我正在制作一份简单的在线申请表.
使用Laravel语法执行操作的最大优点是:
{{ Form::open(array('url' => 'foo/bar')) }}
Run Code Online (Sandbox Code Playgroud)
与简单相反:
<form action="foo/bar">
Run Code Online (Sandbox Code Playgroud)
要么:
echo Form::text('username');
Run Code Online (Sandbox Code Playgroud)
代替:
<input type="text" name="username" />
Run Code Online (Sandbox Code Playgroud)
Laravel方式必须更好,我只想知道为什么?
Mar*_*łek 11
使用内置HTML帮助程序有许多好处:
使用Form::open
您隐藏的CSRF保护输入(默认情况下)
使用表单元素(输入/文本区域等)和withInput
重定向方法,您可以轻松地使用相同的数据填写表单,几乎不需要编码
如果您使用Redirect::route('form'->withInput();
并输入文本{{Form::text('username')}}
,它将自动将输入值设置为旧数据 - 您无需自行编码检查它
此外,如果您想要使用标签匹配字段,则更容易:
{{ Form::label('username', 'Enter username') }}
{{ Form::text('username') }}
Run Code Online (Sandbox Code Playgroud)
它将生成以下代码:
<label for="username">Enter username</label>
<input name="username" type="text" id="username">
Run Code Online (Sandbox Code Playgroud)
所以你看到id会自动创建
可能还有更多.然而,主要的缺点是你需要学习并且它不可移植,以防你想将你的网站移动到其他框架,但每个解决方案都有利有弊.
还有用的这么多优点Laravel
的Form
组成部分,但一个有用的优点是,当你只是使用:
{{ Form::open(array('url' => 'foo/bar')) }}
{{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)
它会自动附加一个_token
对CSRF
保护有用的隐藏字段.否则你必须_token
使用echo Form::token()
或以其他方式手动创建字段.此外,当您使用RESTful
的路线,然后Laravel
的Form
成分追加相应的隐藏_method
字段为好.以下说明来自Laravel
网站:
注意:由于HTML表单仅支持POST和GET,因此将自动在表单中添加_method隐藏字段来欺骗PUT和DELETE方法.
还有其他优点,例如Form Model Binding
,(特别select
)轻松生成表单元素等等.了解更多关于Form
上的文档.
顺便说一句,如果你使用这样的东西,Redirect::back()->withInput()
它不会仅仅因为使用了Form
组件,例如:
<input type='text' name='username' value='<?php echo Input::old('username') ?>' />
Run Code Online (Sandbox Code Playgroud)
这仍然有效,该字段将通过输入重定向重新定位.