kris/laravel4-form-builder

Laravel 表单生成器 - 类似 Symfony

1.6.11 2015-06-30 20:08 UTC

README

Build Status Coverage Status Total Downloads Latest Stable Version License

Laravel 4 表单生成器

受 Symfony 表单生成器启发的 Laravel 4 表单生成器。借助 Laravel 的 FormBuilder 类,可以创建可轻松修改和重用的表单。默认支持 Bootstrap 3。

Laravel 5

要检查 Laravel 5 版本,请查看 laravel-form-builder

文档

有关详细文档,请参阅 http://kristijanhusak.github.io/laravel-form-builder/

注意 版本 4 和 5 之间有一些小的差异(配置路径等),请留意这些。

变更日志

变更日志可以在 这里找到

###安装

{
    "require": {
        "kris/laravel4-form-builder": "1.6.*"
    }
}

运行 composer update

然后将服务提供者添加到 config/app.php

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

以及 Facade(也位于 config/app.php

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

快速入门

创建表单类很简单。假设 PSR-4 已设置用于在 app/Project 文件夹中加载命名空间 App。使用简单的 artisan 命令,我们可以创建表单

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

表单创建在路径 app/Project/Forms/SongForm.php,内容如下

<?php namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

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

如果您想创建一个没有任何字段的空表单,只需跳过传递 --fields 参数

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

得到

<?php namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

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

之后,在控制器中实例化该类并将其传递到视图中

<?php namespace App/Http/Controllers;

use Illuminate\Routing\Controller as BaseController;
use Kris\LaravelFormBuilder\FormBuilder;

class SongsController extends BaseController {

    public function create()
    {
        $form = \FormBuilder::create('App\Forms\SongForm', [
            'method' => 'POST',
            'url' => route('song.store')
        ]);

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

使用 form() 辅助函数在视图中打印表单

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

@extend('layouts.master')

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

上述代码将生成以下 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>

贡献

项目遵循 PSR-2 标准,并由 PHPUnit 测试覆盖。拉取请求应包括测试并通过 Travis CI 构建。

要运行测试,首先使用 composer install 安装依赖项。

之后,可以使用 vendor/bin/phpunit 运行测试