{{ Form::open(array('url' => 'foo/bar')) }}
//
{{ Form::close() }}
默认表单使用 POST 方法,当然您也可以指定传参其他表单的方法:
echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))
注意: 因为 HTML 表单只支持
POST
和GET
方法,所以在使用PUT
及DELETE
的方法时,Laravel 将会自动加入隐藏的_method
字段到表单中,来伪装表单传送的方法。
您也可以建立指向命名的路由或控制器至表单:
echo Form::open(array('route' => 'route.name'))
echo Form::open(array('action' => 'Controller@method'))
您也可以传递路由参数:
echo Form::open(array('route' => array('route.name', $user->id)))
echo Form::open(array('action' => array('Controller@method', $user->id)))
如果您的表单允许上传文件,可以加入 files
选项到参数中:
echo Form::open(array('url' => 'foo/bar', 'files' => true))
Laravel 提供了一个简易的方法,让您可以保护您的应用程序不受到 CSRF (跨网站请求伪造) 攻击。首先 Laravel 会自动在用户的 session 中放置随机的 token,别担心这些会自动完成。如果你为 POST
、PUT
或 DELETE
方法调用了 Form::open
方法,这个 CSRF 参数会用隐藏字段的方式自动加到您的表单中。另外,您也可以使用 token
方法去产生这个隐藏的 CSRF 字段的 HTML 标签:
echo Form::token();
Route::post('profile', array('before' => 'csrf', function() `POST`, `PUT` or `DELETE`
{
//
}));
您经常会想要将模型内容加入至表单中,您可以使用 Form::model
方法实现:
echo Form::model($user, array('route' => array('user.update', $user->id)))
现在当您产生表单元素时,如 text 字段,模型的值将会自动比对到字段名称,并设定此字段值,举例来说,用户模型的 email
属性,将会设定到名称为 email
的 text 字段的字段值,不仅如此,当 Session 中有与字段名称相符的名称, Session 的值将会优先于模型的值,而优先顺序如下:
这样可以允许您快速地建立表单,不仅是绑定模型数据,也可以在服务器端数据验证错误时,轻松的回填用户输入的旧数据!
注意: 当使用
Form::model
方法时,必须确保有使用Form::close
方法来关闭表单!
echo Form::label('email', 'E-Mail Address');
echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));
注意: 在建立标签时,任何您建立的表单元素名称与标签相符时,将会自动在 ID 属性建立与标签名称相同的 ID。
echo Form::text('username');
echo Form::text('email', 'example@gmail.com');
注意: hidden 和 textarea 方法和 text 方法使用属性参数是相同的。
echo Form::password('password');
echo Form::email($name, $value = null, $attributes = array());
echo Form::file($name, $attributes = array());
echo Form::checkbox('name', 'value');
echo Form::radio('name', 'value');
echo Form::checkbox('name', 'value', true);
echo Form::radio('name', 'value', true);
echo Form::number('name', 'value');
echo Form::file('image');
**注意:**表单必须已将
files
选项设定为true
。
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');
echo Form::select('animal', array(
'Cats' => array('leopard' => 'Leopard'),
'Dogs' => array('spaniel' => 'Spaniel'),
));
echo Form::selectRange('number', 10, 20);
echo Form::selectMonth('month');
echo Form::submit('Click Me!');
注意: 需要产生按钮(Button)元素吗? 可以试着使用 button 方法去产生按钮(Button)元素,button 方法与 submit 使用属性参数是相同的。
您可以轻松的定义您自己的表单类的辅助方法叫“宏(macros)”,首先只要注册 宏 ,并给预期名称及封闭函数:
Form::macro('myField', function()
{
return '<input type="awesome">';
});
现在您可以使用注册的名称调用您的宏:
echo Form::myField();
##产生 URL
更多产生 URL 的信息,请参阅文件辅助方法。