表单与 HTML
打开表单
打开表单
{{ Form::open(array('url' => 'foo/bar')) }}
//
{{ Form::close() }}
默认情况下,将假定使用 POST
方法;但是,您可以指定其他方法:
echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))
由于 HTML 表单仅支持 POST
和 GET
,PUT
和 DELETE
方法将通过自动添加 _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))
CSRF 保护
将 CSRF 令牌添加到表单
Laravel 提供了一种简单的方法来保护您的应用程序免受跨站请求伪造。首先,随机令牌被放置在用户的会话中。如果您使用 Form::open
方法与 POST
、PUT
或 DELETE
,CSRF 令牌将自动作为隐藏字段添加到您的表单中。或者,如果您希望生成隐藏 CSRF 字段的 HTML,可以使用 token
方法:
echo Form::token();
将 CSRF 过滤器附加到路由
Route::post('profile', array('before' => 'csrf', function()
{
//
}));
表单模型绑定
打开模型表单
通常,您会希望根据模型的内容填充表单。为此,请使用 Form::model
方法:
echo Form::model($user, array('route' => array('user.update', $user->id)))
现在,当您生成表单元素时,例如文本输入,模型中与字段名称匹配的值将自动设置为字段值。因此,例如,对于名为 email
的文本输入,用户模型的 email
属性将被设置为该值。但是,还有更多!如果会话闪存数据中有与输入名称匹配的项,则该项将优先于模型的值。因此,优先级如下:
- 会话闪存数据(旧输入)
- 显式传递的值
- 模型属性数据
这使您能够快速构建不仅绑定到模型值的表单,而且在服务器上发生验证错误时轻松重新填充!
使用 Form::model
时,请确保使用 Form::close
关闭您的表单!
标签
生成标签元素
echo Form::label('email', '电子邮件地址');
指定额外的 HTML 属性
echo Form::label('email', '电子邮件地址', array('class' => 'awesome'));
创建标签后,您创建的任何名称与标签名称匹配的表单元素将自动接收与标签名称匹配的 ID。
文本、文本区域、密码和隐藏字段
生成文本输入
echo Form::text('username');
指定默认值
echo Form::text('email', 'example@gmail.com');
隐藏 和 文本区域 方法与 文本 方法具有相同的签名。
生成密码输入
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' => '大', 'S' => '小'));
生成带有默认选中的下拉列表
echo Form::select('size', array('L' => '大', 'S' => '小'), 'S');
生成分组列表
echo Form::select('animal', array(
'猫' => array('豹' => '豹'),
'狗' => array('猎犬' => '猎犬'),
));
生成带有范围的下拉列表
echo Form::selectRange('number', 10, 20);
生成带有月份名称的列表
echo Form::selectMonth('month');
按钮
生成提交按钮
echo Form::submit('点击我!');
需要创建按钮元素?尝试 button 方法。它与 submit 方法具有相同的签名。
自定义宏
注册表单宏
定义自己的自定义表单类助手称为“宏”非常简单。它是这样工作的。首先,只需使用给定名称和闭包注册宏:
Form::macro('myField', function()
{
return '<input type="awesome">';
});
现在您可以使用其名称调用宏:
调用自定义表单宏
echo Form::myField();
生成 URL
有关生成 URL 的更多信息,请查看 helpers 文档。