构建表单

目录

提示: 所有表单元素展示的输入数据都已经被实体化方法(HTML::entities)过滤过.

打开一个表单

打开一个提交到当前URL地址的表单:

echo Form::open();

用指定的URI和请求方式打开一个表单:

echo Form::open('user/profile', 'PUT');

打开一个提交到HTTPS URL的表单:

echo Form::open_secure('user/profile');

打开表单并定义额外的HTML属性:

echo Form::open('user/profile', 'POST', array('class' => 'awesome'));

打开一个接受文件上传的表单:

echo Form::open_for_files('users/profile');

打开一个提交到HTTPS URL的接受文件上传的表单:

echo Form::open_secure_for_files('users/profile');

关闭一个表单:

echo Form::close();

跨站提交保护(CSRF Protection)

laravel提供了一个简单的方法来保护你的应用程序组织伪造的跨站点请求, 首先一个随机的令牌被放置在session中, 别怕, 这个是自动完成的, 接着通过表单的"token"方法生成一个隐藏字段放置在Form中:

生成一个包含防止跨站提交(CSRF)令牌的隐参:

echo Form::token();

把CSRF过滤器绑定到路由:

Route::post('profile', array('before' => 'csrf', function()
{
    //
}));

取得CSRF令牌字符串:

$token = Session::token();

提示: 在开启Laravel的CSRF保护之前, 你必须指定一个可用的Session驱动.

更多相关:

标签

生成一个标签元素:

echo Form::label('email', 'E-Mail Address');

为一个标签元素指定额外的HTML属性:

echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));

提示: 在一个标签元素创建时, 任何你所创建的和标签元素name相同的表单元素将自动获得一个ID来匹配标签name,

文本, 文本域, 密码和隐藏字段(Text, TextArea, Password, Hidden)

生成一个文本输入标签:

echo Form::text('username');

为文本输入标签指定默认值:

echo Form::text('email', 'example@gmail.com');

提示: HiddenTextArea 方法拥有和text方法一样的调用方式.学会了一个也就自然会用其他两个了!

生成一个密码输入标签:

echo Form::password('password');

复选和单选按钮(Checkboxes 和 Radio)

生成一个复选输入标签:

echo Form::checkbox('name', 'value');

生成一个默认被选中的复选输入标签:

echo Form::checkbox('name', 'value', true);

提示: radio方法拥有和checkbox方法一样的调用方式!

下拉列表(Drop-Down Lists)

参照数组数据生成一个下拉列表框:

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));

参照数组数据生成一个拥有默认选中值的下拉列表框:

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');

按钮(Buttons)

生成一个提交按钮:

echo Form::submit('Click Me!');

提示: 如果只是普通按钮? 试下button方法. 他喝submit方法调用方式相同.

自定义宏(Macros)

很简单就可以定义你自己的Form类方法, 我们称之为"宏(macros)". 方式如下, 首先用一个给定的名称和闭包函数注册这个宏.

Registering a Form macro:

Form::macro('my_field', function()
{
    return '<input type="awesome">';
});

现在你可以调用自定义的宏了:

调用一个自定义Form宏:

echo Form::my_field();