Laravel Form方法VS传统编码

时间:2014-09-22 08:35:22

标签: php laravel laravel-4

我目前正在学习Laravel并发现它非常有用和有趣。

目前我正在制作一份简单的在线申请表。

使用Laravel语法执行操作的最大好处是:

{{ Form::open(array('url' => 'foo/bar')) }}

与简单相反:

<form action="foo/bar">

或者:

echo Form::text('username');

而不是:

<input type="text" name="username" />

Laravel方式必须更好,我只是想知道为什么?

2 个答案:

答案 0 :(得分:11)

使用内置HTML帮助程序有许多好处:

  1. 使用Form::open添加隐藏的CSRF保护输入(默认情况下)

  2. 使用表单元素(输入/ textarea等)和withInput重定向方法,您可以轻松地使用相同的数据填写表单,几乎不需要编码

    如果您使用Redirect::route('form'->withInput();并有输入 文字{{Form::text('username')}}它会自动设置输入值的旧数据 - 您不需要自己编码检查

  3. 此外,如果您希望将字段与标签匹配则更容易:

    {{ Form::label('username', 'Enter username') }}
    {{ Form::text('username') }}
    

    它将生成以下代码:

    <label for="username">Enter username</label>
    <input name="username" type="text" id="username">
    

    因此您会看到ID会自动创建

  4. 可能还有更多。然而,主要的缺点是你需要学习它并且它不可移动,以防你想将你的网站移动到其他框架,但每个解决方案都有利有弊。

答案 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()

这仍然有效,该字段将通过输入重定向重新定位。