使用 laravel-form-builder 高效的创建表单

做一个系统免不了要有CURD操作, 表单的创建更是稀松平常, 以前都是一个一个表单的去写, 有很多代码都是重复的, 效率很低, 现在好了, 有了laravel-form-builder, 妈妈再也不用操心我的表单了.

项目地址:

1. 功能概述

简单来说, Laravel form builder就是是用来帮助使用者简单的创建, 修改和重用表单, 样式上使用了bootstrap 3.

2. 安装

修改 composer.json

{
    "require": {
        "kris/laravel-form-builder": "0.*"
    }
}

执行 composer update

修改 config/app.php

'providers' => [
        // ...
        'Kris\LaravelFormBuilder\FormBuilderServiceProvider'
]
'aliases' => [
        // ...
        'FormBuilder' => 'Kris\LaravelFormBuilder\Facades\FormBuilder'
]

3. 基本使用

创建表单非常容易, 可以使用一句简单的 artisan 命令

php artisan form:make app/Project/Forms/PostForm

会自动在 app/Project/Forms/PostForm.php 创建一个表单类文件

<?php namespace Project\Forms;

use Kris\LaravelFormBuilder\Form;

class PostForm extends Form
{
    public function buildForm()
    {
        // Add fields here...
    }
}

当然, 你也可以在创建时加上一些字段:

php artisan form:make app/Project/Forms/SongForm --fields="name:text, lyrics:textarea, publish:checkbox"

会在app/Project/Forms/SongForm.php生成以下的文件:

<?php namespace Project\Forms;

use Kris\LaravelFormBuilder\Form;

class SongForm extends Form
{
    public function buildForm()
    {
        $this
            ->add('name', 'text')
            ->add('lyrics', 'textarea')
            ->add('publish', 'checkbox');
    }
}

在controller里面引用

创建完表单类, 就可以在controller里面调用了

<?php namespace Project\Http\Controllers;

use Illuminate\Routing\Controller;

class SongsController extends BaseController {

    /**
     * @Get("/songs/create", as="song.create")
     */
    public function index()
    {
        $form = \FormBuilder::create('Project\Forms\SongForm', [
            'method' => 'POST',
            'url' => route('song.store')
        ]);

        return view('song.create', compact('form'));
    }

    /**
     * @Post("/songs", as="song.store")
     */
    public function store()
    {
    }
}

在views里面使用

或者可以直接在blade文件里面使用

<!-- resources/views/song/create.blade.php -->

@extend('layouts.master')

@section('content')
    {{ form($form) }}
@endsection

上面的 {{ form($form) }} 会自动生成以下html

<form method="POST" action="http://example.dev/songs">
    <input name="_token" type="hidden" value="FaHZmwcnaOeaJzVdyp4Ml8B6l1N1DLUDsZmsjRFL">
    <div class="form-group">
        <label for="name" class="control-label">name</label>
        <input type="text" class="form-control" id="name">
    </div>
    <div class="form-group">
        <label for="lyrics" class="control-label">lyrics</label>
        <textarea name="lyrics" class="form-control"></textarea>
    </div>
    <div class="form-group">
        <label for="publish" class="control-label">publish</label>
        <input type="checkbox" name="publish" id="publish">
    </div>
</form>

更多的使用方法, 请参考官方文档.

本帖已被设为精华帖!
dinghua
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4
橙子

官方没有文档呀,请问如何使用radio,比如:选择性别:

4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会