WBE / laravel-form-builder
Laravel表单构建器 - 类似Symfony
Requires
- php: >=5.6.0
- illuminate/database: 5.*@dev
- illuminate/validation: 5.*@dev
- laravelcollective/html: 5.*
Requires (Dev)
- orchestra/testbench: ~3.4
- phpunit/phpunit: ~5.0
- dev-master / 1.16.x-dev
- 1.15.1
- 1.15.0
- 1.14.0
- 1.13.0
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.0
- 1.8.0
- 1.7.10
- 1.7.0
- 1.6.50
- 1.6.42
- 1.6.41
- 1.6.40
- 1.6.31
- 1.6.30
- 1.6.20
- 1.6.12
- 1.6.11
- 1.6.10
- 1.6.0
- 1.5.10
- 1.5.1
- 1.5.0
- 1.4.26
- 1.4.25
- 1.4.22
- 1.4.21
- 1.4.20
- 1.4.13
- 1.4.12
- 1.4.11
- 1.4.10
- 1.4.06
- 1.4.05
- 1.4.04
- 1.4.03
- 1.4.02
- 1.4.01
- 1.4.0
- 1.3.80
- 1.3.71
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1
- 1.0
- 0.1.8
This package is not auto-updated.
Last update: 2024-09-29 19:39:47 UTC
README
Laravel 5表单构建器
受Symfony表单构建器启发的Laravel 5表单构建器。通过Laravel的FormBuilder类创建可轻松修改和重用的表单。默认支持Bootstrap 3。
Laravel 4
关于Laravel 4版本的检查请参阅 laravel4-form-builder。
升级到1.6
如果您已从1.5.*或更早版本升级到>1.6.*,并且表单值绑定有问题,请将default_value重命名为value。
更多详细信息请参阅 变更日志。
文档
有关详细文档,请参阅 http://kristijanhusak.github.io/laravel-form-builder/。
变更日志
变更日志可在 此处找到。
安装
使用Composer
composer require kris/laravel-form-builder
或手动修改composer.json
文件
{ "require": { "kris/laravel-form-builder": "1.*" } }
然后运行composer install
然后将服务提供者添加到config/app.php
'providers' => [ // ... Kris\LaravelFormBuilder\FormBuilderServiceProvider::class ]
以及外观(也在config/app.php
中)
'aliases' => [ // ... 'FormBuilder' => Kris\LaravelFormBuilder\Facades\FormBuilder::class ]
注意:此包将添加laravelcollective/html
包,并在IoC容器中不存在时加载别名(表单、Html)。
快速开始
创建表单类很简单。使用简单的Artisan命令
php artisan make:form Forms/SongForm --fields="name:text, lyrics:textarea, publish:checkbox"
表单在路径app/Forms/SongForm.php
中创建,内容为
<?php namespace App\Forms; use Kris\LaravelFormBuilder\Form; class SongForm extends Form { public function buildForm() { $this ->add('name', 'text', [ 'rules' => 'required|min:5' ]) ->add('lyrics', 'textarea', [ 'rules' => 'max:5000' ]) ->add('publish', 'checkbox'); } }
如果您想实例化不包含任何字段的空表单,请跳过传递--fields
参数
php artisan make:form 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(FormBuilder $formBuilder) { $form = $formBuilder->create(\App\Forms\SongForm::class, [ 'method' => 'POST', 'url' => route('song.store') ]); return view('song.create', compact('form')); } public function store(FormBuilder $formBuilder) { $form = $formBuilder->create(\App\Forms\SongForm::class); if (!$form->isValid()) { return redirect()->back()->withErrors($form->getErrors())->withInput(); } // Do saving and other things... } }
另一个例子
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; use Kris\LaravelFormBuilder\FormBuilder; use App\Forms\SongForm; class SongsController extends BaseController { public function create(FormBuilder $formBuilder) { $form = $formBuilder->create(SongForm::class, [ 'method' => 'POST', 'url' => route('song.store') ]); return view('song.create', compact('form')); } public function store(FormBuilder $formBuilder) { $form = $formBuilder->create(SongForm::class); if (!$form->isValid()) { return redirect()->back()->withErrors($form->getErrors())->withInput(); } // Do saving and other things... } }
创建路由
// app/Http/routes.php Route::get('songs/create', [ 'uses' => 'SongsController@create', 'as' => 'song.create' ]); Route::post('songs', [ 'uses' => 'SongsController@store', 'as' => 'song.store' ]);
使用form()
辅助函数在视图中打印表单
<!-- resources/views/song/create.blade.php -->
@extends('app')
@section('content')
{!! form($form) !!}
@endsection
转到/songs/create
;上面的代码将生成此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" id="lyrics"></textarea> </div> <div class="form-group"> <label for="publish" class="control-label">Publish</label> <input type="checkbox" name="publish" id="publish"> </div> </form>
或者您可以使用简单的数组更轻松地生成表单
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; use Kris\LaravelFormBuilder\FormBuilder; use App\Forms\SongForm; class SongsController extends BaseController { public function create(FormBuilder $formBuilder) { $form = $formBuilder->createByArray([ [ 'name' => 'name', 'type' => 'text', ], [ 'name' => 'lyrics', 'type' => 'textarea', ], [ 'name' => 'publish', 'type' => 'checkbox' ], ] ,[ 'method' => 'POST', 'url' => route('song.store') ]); return view('song.create', compact('form')); } }
贡献
项目遵循PSR-2标准,并用PHPUnit测试覆盖。拉取请求应包括测试并通过Travis CI构建。
要运行测试,请首先使用composer install
安装依赖项。
然后可以使用vendor/bin/phpunit
运行测试