Forms & HTML 组件 - laravelcollective/html
简书链接 :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 表单仅仅支持POST
和GET
方法,PUT
和DELETE
方法将会使用一个隐藏域_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
这个字段将会用 用户 Model
的 email
属性来填充并且设置. 当然, 还有其他用法. 如果一个字段在session 闪存数据中 也存在这个名字, 这个将会覆盖模型中的这个字段值. 优先级是这个样子的:
- Session Flash Data (Old Input) [session 闪存 / 老的输入数据 ]
- Explicitly Passed Value [输入值]
- 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');
注意: hidden 和 textarea 方法的参数和 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的更多相关文章
- django的forms认证组件
django的forms认证组件 每个网站的注册界面都需要有相应的"认证"功能,比如说认证注册页面的用户名是否已被注册,二次输入的密码是否一致以及认证用户输入的用户名.邮箱.手机号 ...
- 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session
多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...
- 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选
在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...
- Xamarin组件包 Xamarin.ToolKit
一 简介 Xamarin.ToolKit是个人在使用xamrin.froms开发2年中,因实际项目需要所自定义的组件包.该组件包采用xamarin.froms方式封装,用户可像普通forms控件那样 ...
- 前端MVC Vue2学习总结(五)——表单输入绑定、组件
一.表单输入绑定 1.1.基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖, ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- Django多对多关系建立及Form组件
目录 Django多对多关系 1.创建方式一全自动 2.创建方式二纯手撸 3.半自动(推荐使用) forms校验组件 使用forms组件实现注册功能 form常用字段和插件 数据校验 钩子函数 HOO ...
- React 学习笔记(学习地址汇总)
好的博文地址:http://www.ruanyifeng.com/blog/2015/03/react.html 官网学习地址:http://facebook.github.io/react/docs ...
- C#操作office进行Excel图表创建,保存本地,word获取
,新建C#控制台应用程序(Excel创建图表) using System; using System.Collections.Generic; using System.Linq; using Sys ...
随机推荐
- Linux 相关scsi命令
Linux 相关scsi命令 由于前段时间存储扩容,对存储操作较多,下面记录了常用的操作: lsscsi命令:显示scsi设备信息 #lsscsi [0:0:0:2] disk IBM ...
- Appium移动自动化测试(二)--安装Android开发环境(转)
Appium移动自动化测试(二)--安装Android开发环境 2015-06-04 17:30 by 虫师, 35299 阅读, 23 评论, 收藏, 编辑 继续Appium环境的搭建. 第二节 ...
- [转]windows10 64位环境下安装mysql5.7.17
今天以zip模式在windows10 64位环境下安装mysql5.7,到最后一步提示mysql服务无法启动. 安装步骤如下: 1.配置环境变量 我的电脑->属性->高级->环境变量 ...
- 斜堆,非旋转treap,替罪羊树
一.斜堆 斜堆是一种可以合并的堆 节点信息: struct Node { int v; Node *ch[]; }; 主要利用merge函数 Node *merge(Node *x, Node *y) ...
- NuGet 无法连接到远程服务器-解决方法
一. Entity Framework以下简称EF 安装EF4.3的步骤是首先安装VS扩展 NuGet,然后再使用NuGet安装EF程序包 安装完NuGet就可以安装EF了,有两种方式可以安装EF: ...
- Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些.. Rails 4 安装 针对于安装了RVM gem install rails 没有的话应该主 sud ...
- java生成Json工具之JsonSimple的使用
json-simple是由是Google开发的Java JSON解析框架,基于Apache协议.目前版本为1.1 项目主页:https://code.google.com/p/json-simple/ ...
- Spring中的AOP
什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...
- Android蓝牙操作笔记(转)
蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...
- Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)
1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...