plokko/formbuilder

此包最新版本(0.2.1)没有可用的许可信息。

Laravel 表单创建助手

0.2.1 2016-03-15 15:56 UTC

This package is auto-updated.

Last update: 2024-09-18 01:51:35 UTC


README

Laravel 表单和输入字段助手模块版本 0.2 Beta

更新日志

  • 0.2 beta - 从头重新编写,不兼容之前的版本

## 安装

  1. 使用 Composer 需要
composer require plokko/formbuilder
  1. 在 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);