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