简书链接 :Forms & HTML 组件 - laravelcollective/html

安装

方法一:

  composer require laravelcollective/html

方法二:

  编辑项目的 composer.json 文件. 在 require 部分 加入 laravelcollective/html :

  "require": {

    "laravelcollective/html": "5.1.*"
  }

  然后composer update

配置

添加 provider 到 config/app.php 的 providers 数组:

'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],

最后 添加两个类链接到 config/app.php 的 aliases 数组:

'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],

创建表单

打开表单

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

默认是 POST 方法, 你可以随意指定其他接收方法

echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))

//Note: HTML 表单仅仅支持 POSTGET方法, PUTDELETE 方法将会使用一个隐藏域_method 添加到form 表单中来欺骗实现

你可以使用指定的控制器@动作 或者命名的路由来创建表单

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 Token

Laravel 提供了一个简单的方法来防止你的应用遭受跨站攻击. 首先会在你的session 中生成一个随机的 token, 如果你使用 Form::open 方法并且提交方法是 POST, PUT或者是 DELETE, CSRF token 将会自动的添加到你的form 表单的隐藏域中. 换种方法 如果你像自己生成 CSRF token 字段, 你可以使用 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)))

现在当你自动生成一个表单元素, 例如文本输入框. Model 的值将会自动匹配并且填写到相关的表单字段中.例如. 一个文本输入框的 name 是 email这个字段将会用 用户 Modelemail 属性来填充并且设置. 当然, 还有其他用法. 如果一个字段在session 闪存数据中 也存在这个名字, 这个将会覆盖模型中的这个字段值. 优先级是这个样子的:

  1. Session Flash Data (Old Input) [session 闪存 / 老的输入数据 ]
  2. Explicitly Passed Value [输入值]
  3. Model Attribute Data [模型属性值]

这个可以让你快速的使用模型数据来创建表单, 也能轻松的在服务器校验错误之后重新发布表单.

使用 Form::model方法的时候一定要使用 Form::close来关闭表单!

标签

生成标签元素

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

指定额外的 html 属性

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

注意:在创建了一个标签之后, 如果有创建的表单元素的 name 值和 label 的 name 值相符的话, 将会自动在 表单元素 中自动匹配增加 id 属性. id 的值就是 label 的name 值.

文本框, 文本域, 密码 & 隐藏域

创建文本框

echo Form::text('username');

指定默认值

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

注意: hiddentextarea 方法的参数和 text 相同.

生成密码输入框

echo Form::password('password', array('class' => 'awesome'));

生成其他输入框

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::date('name', \Carbon\Carbon::now());

文件选择器

生成文件选择器

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');

生成空占位符的 下拉列表

这回创建一个没有任何值的 <option> 元素作为下拉列表的第一个选择值.

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['placeholder' => 'Pick a size...']);

生成分组的列表

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 方法. 他和 submit 方法有相同的参数

自定义表单元素

注册一个新的表单元素

用来很方便的来自定义一个表单元素的方法叫做 macros . 合理是怎样使用它. 首先简单的使用名称和闭包函数来注册一个 :

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

现在你可以使用自定义的名字来调用这个 macro

调用自定义的 Form Macro

echo Form::myField()

生成URL

link_to

根据给定的URL生成 html 链接

echo link_to('foo/bar', $title = null, $attributes = array(), $secure = null);

link_to_asset

生成一个链接到指定资源的 html

echo link_to_asset('foo/bar.zip', $title = null, $attributes = array(), $secure = null);

link_to_route

生成一个根据给定路由的html链接

echo link_to_route('route.name', $title = null, $parameters = array(), $attributes = array());

link_to_action

根据指定的控制器/方法来生成 html 链接

echo link_to_action('HomeController@getIndex', $title = null, $parameters = array(), $attributes = array());

Forms & HTML 组件 - laravelcollective/html的更多相关文章

  1. django的forms认证组件

    django的forms认证组件 每个网站的注册界面都需要有相应的"认证"功能,比如说认证注册页面的用户名是否已被注册,二次输入的密码是否一致以及认证用户输入的用户名.邮箱.手机号 ...

  2. 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session

    多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...

  3. 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选

    在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...

  4. Xamarin组件包 Xamarin.ToolKit

    一  简介 Xamarin.ToolKit是个人在使用xamrin.froms开发2年中,因实际项目需要所自定义的组件包.该组件包采用xamarin.froms方式封装,用户可像普通forms控件那样 ...

  5. 前端MVC Vue2学习总结(五)——表单输入绑定、组件

    一.表单输入绑定 1.1.基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖, ...

  6. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  7. Django多对多关系建立及Form组件

    目录 Django多对多关系 1.创建方式一全自动 2.创建方式二纯手撸 3.半自动(推荐使用) forms校验组件 使用forms组件实现注册功能 form常用字段和插件 数据校验 钩子函数 HOO ...

  8. React 学习笔记(学习地址汇总)

    好的博文地址:http://www.ruanyifeng.com/blog/2015/03/react.html 官网学习地址:http://facebook.github.io/react/docs ...

  9. C#操作office进行Excel图表创建,保存本地,word获取

    ,新建C#控制台应用程序(Excel创建图表) using System; using System.Collections.Generic; using System.Linq; using Sys ...

随机推荐

  1. Linux 相关scsi命令

    Linux 相关scsi命令 由于前段时间存储扩容,对存储操作较多,下面记录了常用的操作: lsscsi命令:显示scsi设备信息 #lsscsi [0:0:0:2]    disk    IBM   ...

  2. Appium移动自动化测试(二)--安装Android开发环境(转)

    Appium移动自动化测试(二)--安装Android开发环境 2015-06-04 17:30 by 虫师, 35299 阅读, 23 评论, 收藏, 编辑 继续Appium环境的搭建. 第二节   ...

  3. [转]windows10 64位环境下安装mysql5.7.17

    今天以zip模式在windows10 64位环境下安装mysql5.7,到最后一步提示mysql服务无法启动. 安装步骤如下: 1.配置环境变量 我的电脑->属性->高级->环境变量 ...

  4. 斜堆,非旋转treap,替罪羊树

    一.斜堆 斜堆是一种可以合并的堆 节点信息: struct Node { int v; Node *ch[]; }; 主要利用merge函数 Node *merge(Node *x, Node *y) ...

  5. NuGet 无法连接到远程服务器-解决方法

    一. Entity Framework以下简称EF 安装EF4.3的步骤是首先安装VS扩展 NuGet,然后再使用NuGet安装EF程序包 安装完NuGet就可以安装EF了,有两种方式可以安装EF: ...

  6. Ruby On Rails 4 hello world,Ruby On Rails上手

    有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些.. Rails 4 安装 针对于安装了RVM gem install rails 没有的话应该主 sud ...

  7. java生成Json工具之JsonSimple的使用

    json-simple是由是Google开发的Java JSON解析框架,基于Apache协议.目前版本为1.1 项目主页:https://code.google.com/p/json-simple/ ...

  8. Spring中的AOP

    什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...

  9. Android蓝牙操作笔记(转)

    蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...

  10. Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)

    1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...