使用 Laravel-form-builder 高效的创建表单
做一个系统免不了要有 CURD 操作,表单的创建更是稀松平常,以前都是一个一个表单的去写,有很多代码都是重复的,效率很低,现在好了,有了 laravel-form-builder, 妈妈再也不用操心我的表单了.
项目地址:
[ Laravel 5 ] https://github.com/kristijanhusak/laravel-...
[ Laravel 4 ] https://github.com/kristijanhusak/laravel-...
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>
更多的使用方法,请参考官方文档.
推荐文章: