简书链接 :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. 动态规划——树形dp

    动态规划作为一种求解最优方案的思想,和递归.二分.贪心等基础的思想一样,其实都融入到了很多数论.图论.数据结构等具体的算法当中,那么这篇文章,我们就讨论将图论中的树结构和动态规划的结合——树形dp. ...

  2. eucalyptus的网络模式

    总共有四种网络模式,默认采用的是system模式 SYSTEM Mode 最简单的网络配置.Eucalyptus分配mac地址,使用 Xen Bridge,配合已有的 DHCP DHCP 來分配 IP ...

  3. HDU 1247

    简单的字典树 - -,求一个单词是否由两个单词组成 #include<iostream> #include<cstring> #include<cstdio> us ...

  4. H - Cow Contest

    有N头牛,编号从1到N,参与一个变成比赛(大牛编程比赛,一般水水平敢参加???),一些牛的代码比较出色,每头牛都有一个独一无二的技能等级在这些竞争者中. 比赛循环进行在任意两头牛之间(姑且这么翻译吧) ...

  5. Mac内建Apache开机启动

    取消: sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 添加: sudo launchctl ...

  6. JSP基本语法

    在tomcat环境搭建一文中为大家详细的介绍了第一个JSP的程序--Hello World,大家都应该顺利的完成了吧,以此为一个开端,希望大家在学习java EE的路上乘风破浪,不断进步.今天,为大家 ...

  7. 完整的站内搜索Demo(Lucene.Net+盘古分词)

    前言 首先自问自答几个问题,以让各位看官了解写此文的目的 什么是站内搜索?与一般搜索的区别? 很多网站都有搜索功能,很多都是用SQL语句的Like实现的,但是Like无法做到模糊匹配(例如我搜索“.n ...

  8. Maven常用插件--转

    =========Maven Report Plugin========= 1.源码分析 <artifactId>maven-pmd-plugin</artifactId> 2 ...

  9. Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历

    1. Collection集合存储学生对象并遍历: 需求:存储自定义对象并遍历Student(name,age) 分析: (1)创建学生类 (2)创建集合对象 (3)创建学生对象 (4)把学生对象添加 ...

  10. codeforces 251A Points on Line(二分or单调队列)

    Description Little Petya likes points a lot. Recently his mom has presented him n points lying on th ...