laravel5.5组件之 Forms & HTML 组件 (laravelcollective/html)

一、为什么要使用laravel的Forms&HTML组件?

因为第一次用Laravel,虽然都在说laravel好,但自己没有意识到他好在哪里的时候,只能先用他已有的工具,Forms和HTML工具同样如此,感觉用起来也不省事,而且还不符合自己曾经编写HTML表单的习惯,看着怪别扭,上网查了一些资料,说是使用这个组件会减少HTML代码量,并且会协助创建CSRF(Cross Site Request Forgery, 跨站域请求伪造)的验证token,暂时没体会到这些好处,先用起来再说,慢慢品!

二、Forms&HTML组件安装配置

1. 跳转到项目根目录(windows进入dos系统中操作),执行以下代码,安装组件包:

composer require "laravelcollective/html":"^5.2.0"

2. 修改配置文件/config/app.php

(1)在providers中添加组件支持类

'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,    // 增加这一行代码
    // ...
  ],

(2)在aliases中添加组件类别名 

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

三、Forms&HTML组件具体使用

1. 创建表单(一般用于添加数据时使用)

/*
 *  作用:创建表单
 *
 *  参数1:数组
 *       (1)url:表单提交地址;
 *       (2)method:表单提交方式,如果不设置,默认为post;
 *       (3)files:如果设置files为true,表示当前表单支持文件上传
 *
 *  参数2:数组,可以写表单所有的各种Html属性,如class、id、style等。
**/

{!! Form::open(array('url' => '/admin/index', 'method' => 'post', 'files' => true), ['class'=>'formclass']) !!}
    //
{!! Form::close() !!}

2. 生成CSRF token

  如果使用Form::open方式创建表单的话,laravel会自动生成token,如果自己写的html表单,要生成token,可以使用如下组件:

{!! Form::token() !!}

3. 表单模型绑定(一般用于修改数据时使用)

  通常, 你需要想表单中填入来自数据库模型的数据. 想这样做你可以使用 Form::model 方法:

/*
 *  作用:创建模型绑定表单
 *  说明:
 *      (1)$user:根据id获取到的用户信息数组;
 *      (2)route:当前表单提交的路由地址及参数值。
**/
{!! Form::model($user, ['route'=>array('user.update', $user->id), 'method'=>'PUT']) !!}

4. 表单组件

(1)文本表单

/*
 *    参数1:name为该表单name值;
 *    参数2:表单默认value值
 *    参数3:当前表单所有的属性数组
 */
// 文本框text
{
   
   { Form::text('name', null, ['class'=>'small', 'style'=>'color:#333;']) }}
// 文本域textarea
{
   
   { Form::textarea('name', null, ['class'=>'small', 'col'=>'50', 'row'=>'6']) }}
// 隐藏域hidden
{
   
   { Form::hidden('name', null, ['class'=>'small']) }}

// 其他文本框,如email、number、date
{
   
   { Form::email($name, $value = null, $attributes = array()) }}
{
   
   { Form::number('name', 'value') }}
{
   
   { Form::date('name', \Carbon\Carbon::now()) }}

(2)密码输入框

/*
 *    参数1: 表单参数名称
 *    参数2: 表单属性
 */
{
   
   { Form::password('pwd', array('class' => 'awesome')) }}

(3)文件选择表单

/*
 *    参数1: 表单参数名称
 *    参数2: 表单属性
 *
 *    注意: 在使用文件选择器时,Form::open或者Form::model的属性files必须设置为true。
 */
{
   
   { Form::file($name, $attributes = array()) }}

(4)单选和多选表单

/*
 *   参数1:表单属性名;
 *   参数2:表单属性值;
 *   参数3: 表单是否被选中,默认为false,true为被选中状态
 */

// 未被选择的单选表单
{
   
   { Form::radio('name', 'value') }}
// 未被选择的多选表单
{
   
   { Form::checkbox('name', 'value') }}

// 已被选择的单选表单
{
   
   { Form::radio('name', 'value', true) }}
// 已被选择的多选表单
{
   
   { Form::checkbox('name', 'value', true) }}

(5)下拉表单

// 生成普通下拉列表
{
   
   { Form::select('size', array('L' => 'Large', 'S' => 'Small')) }}

// 生成有默认值的下拉列表,默认显示S键值对应数据
{
   
   { Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S') }}

// 生成带有空占位符的下拉列表(创建一个没有任何值的 <option> 元素作为下拉列表的第一个选择值)
{
   
   { Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['placeholder' => 'Pick a size...']) }}

// 生成分组的下拉列表列表
{
   
   { Form::select('animal', array(
        'Cats' => array('leopard' => 'Leopard'),
        'Dogs' => array('spaniel' => 'Spaniel'),
    )) }}

// 生成范围选择值的下拉列表
{
   
   { Form::selectRange('number', 10, 20) }}

// 生成有月份名称的选择值
{
   
   { Form::selectMonth('month') }}

(6)按钮

// 生成表单提交按钮
{
   
   { Form::submit('Click me!') }}

// 生成表单button按钮
{
   
   { Form::button('Click me!') }}

参考文章:Laravel 组件之 Forms & HTML 组件 (laravelcollective/html)

猜你喜欢

转载自blog.csdn.net/createNo_1/article/details/81748490