plokko / formbuilder
此包最新版本(0.2.1)没有可用的许可信息。
Laravel 表单创建助手
0.2.1
2016-03-15 15:56 UTC
Requires
- php: >=5.4
- laravelcollective/html: ~5.0
This package is auto-updated.
Last update: 2024-09-18 01:51:35 UTC
README
Laravel 表单和输入字段助手模块版本 0.2 Beta
更新日志
- 0.2 beta - 从头重新编写,不兼容之前的版本
## 安装
- 使用 Composer 需要
composer require plokko/formbuilder
- 在 app 配置文件 /config/app.php 中添加提供者和外观
'providers' => [ //... //FormBuilder// plokko\FormBuilder\FormBuilderProvider::class, //... ] //... 'aliases' => [ //... //FormBuilder// 'FormBuilder'=> plokko\FormBuilder\Facades\FormBuilder::class, //... ] //...
## 使用
- 创建 FormBuilder 实例 首先,使用 make 命令在你的视图中创建一个新的 FormBuilder 实例,并将其分配给一个变量
<?php $fb=FormBuilder::make(['route'=>route('my.destination.route')]);
make 函数接受与 laravelcollective/html Form::open 相同的参数
- 声明字段 然后,您可以使用请求的字段类型作为方法名和字段名作为值来添加字段
$fb->text('text_field'); //Input field (type=text) $fb->email('email_field);//Email input field (type=email) $fb->textarea('message');//Textarea_
- 访问字段
要设置字段的选项,您可以在声明时访问字段
$fb->text('field_required')->required()->addClass('required_field');
或者您可以在稍后通过将其作为参数或数组按名称访问来检索它
$fb->field_required->value('My value'); $fb['field_required']->addClass('my-other-class');
如果您尝试访问未声明的字段,该字段将自动声明为文本字段
$fb->undeclared_field->value(1); // Equals to: // $fb->text('undeclared_field')->value(1);
- 渲染表单
要渲染表单,您应该首先使用 openForm() 和 closeForm() 函数打开和关闭表单,并在它们之间使用 render() 函数渲染字段
{!! $fb->openForm() !!} <!--render the fields/--> {!! $fb->render() !!} <!--Add some basic submit buttons--> <button type=submit>Submit</button> <button type=reset>Reset</button> {!! $fb->closeForm() !!}
自定义
表单视图
您可以通过应用视图到 FormBuilder 类来指定表单的渲染方式
<?php $fb=FormBuilder::make(['route'=>route('my.destination.route')]) ->view('my.custom.view');
您可以指定视图如下,其中 $fields 是包含所有定义字段的数组
<?php /**@var array $fields**/ ?> @foreach($fields AS $field) <?/**@var \plokko\FormBuilder\FormField $field**/?> <div class="form-group"> {!! $field->label->render()!!} @if($field->type!='checkbox'&&$field->type!='radio') <?$field->addClass('form-control');/*Add class except for radio or checkbox fields*/?> @endif {!! $field->render() !!} </div> @endforeach
视图将使用 render 函数被调用
扩展功能
您可以轻松地通过更改配置文件来添加或替换字段类型;为此,首先发布配置
php artisan vendor:publish
然后,编辑 /config/app.php 文件
<?php return [ /** Default view for FormBuilder **/ 'view'=>'formbuilder::bootstrap.form.base', /** Registered FormField providers as type=>classname **/ 'fieldProviders'=>[ 'select' => plokko\FormBuilder\fields\SelectField::class, 'text' => plokko\FormBuilder\fields\InputField::class, 'email' => plokko\FormBuilder\fields\InputField::class, 'hidden' => plokko\FormBuilder\fields\InputField::class, 'number' => plokko\FormBuilder\fields\InputField::class, 'password' => plokko\FormBuilder\fields\InputField::class, 'file' => plokko\FormBuilder\fields\FileField::class, 'radio' => plokko\FormBuilder\fields\CheckboxField::class, 'checkbox' => plokko\FormBuilder\fields\CheckboxField::class, 'textarea' => plokko\FormBuilder\fields\InputField::class, 'select2' => plokko\FormBuilder\fields\Select2Field::class, ], ];
您可以通过以下方式扩展 plokko\FormBuilder\fields\FormField 类来创建新的字段类型
<?php namespace mynamespace; use plokko\FormBuilder\fields\FormField; class MyCustomField extends FormField { //... function myFunction() { //... return $this; } //... }
然后在配置文件中添加它,如下所示
<?php return [ /** Default view for FormBuilder **/ 'view'=>'my.default.form.view', /** Registered FormField providers as type=>classname **/ 'fieldProviders'=>[ //... 'myfield'=>mynamespace/MyCustomField::class, 'myfield2'=>mynamespace/MyCustomField::class, //... ], ];
然后,您可以使用声明的名称添加字段
//... $fb->myfield('field1')->myFunction(); $fb->myfield2('field2')->myFunction()->required()->value(2);