ycs77/laravel-form-builder-fields

这个Laravel表单构建器更多字段。

v0.4.1 2020-10-26 11:44 UTC

This package is auto-updated.

Last update: 2024-09-23 20:53:50 UTC


README

Latest Version on Packagist Software License Build Status Style CI Build Status Total Downloads

安装

必须安装Laravel表单构建器

通过Composer

composer require ycs77/laravel-form-builder-fields

类型

  • 可复选组类型
  • 富文本编辑器类型

可复选组类型

可复选组类型与选择类型相似,但有所不同。

php artisan vendor:publish --tag=laravel-form-builder-checkable-group-type
# or horizontal
php artisan vendor:publish --tag=laravel-form-builder-checkable-group-type-horizontal

设置配置

config/laravel-form-builder.php

<?php

return [

    // Templates
    // ...
    'checkable_group' => 'laravel-form-builder::checkable_group',

    'custom_fields' => [
        'checkable_group' => '\Ycs77\LaravelFormBuilderFields\Fields\CheckableGroupType',
    ],
];

使用可复选组

$this->add('field_name', 'checkable_group', [
    'choices' => [
        'en' => 'English',
        'fr' => 'French',
    ],
    'is_checkbox' => true, // False is radio
    'selected' => ['en'],
    'language_name' => 'test-lang-name',
    // 'choice_options' => [
    //     'wrapper' => [
    //         'class' => 'form-control',
    //     ],
    // ],
]);

如果您在表单中设置了 language_name 但不想在可复选组中使用它,可以将其设置为 false

$this->add('field_name', 'checkable_group', [
    ...
    'language_name' => false,
]);

样式类配置

使用bootstrap 4类

config/laravel-form-builder.php

<?php

return [
    'defaults' => [
        // ...

        'checkable_group' => [
            // 'wrapper_class' => 'form-group',
        ],

        'checkbox' => [
            // ...

            'choice_options' => [
                'wrapper_class' => 'custom-control custom-checkbox',
                'label_class' => 'custom-control-label',
                'field_class' => 'custom-control-input',
            ],
        ],

        'radio' => [
            // ...

            'choice_options' => [
                'wrapper_class' => 'custom-control custom-radio',
                'label_class' => 'custom-control-label',
                'field_class' => 'custom-control-input',
            ],
        ],
    ],
];

或水平样式

config/laravel-form-builder.php

<?php

return [
    'defaults' => [
        // ...

        'checkable_group' => [
            'label_class' => 'col-lg-2 col-form-label text-lg-right pt-0',
        ],

        // Same...
    ],
];

富文本编辑器类型

这个富文本编辑器默认使用 TinyMCE,您可以替换它。

php artisan vendor:publish --tag=laravel-form-builder-rich-editor-type

设置配置

config/laravel-form-builder.php

<?php

return [

    // Templates
    // ...
    'rich_editor' => 'laravel-form-builder::rich_editor',

    'custom_fields' => [
        'rich_editor' => '\Ycs77\LaravelFormBuilderFields\Fields\RichEditorType',
    ],
];

使用富文本编辑器

$this->add('content', 'rich_editor');

下载TinyMCE语言包

净化富文本编辑器内容

安装HTMLPurifier for laravel

composer require mews/purifier

用于您的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Mews\Purifier\Facades\Purifier;

class PostController extends Controller
{
    public function store(Request $request)
    {
        $content = Purifier::clean($request->content);
    }
}

上传图片

开始之前,您必须设置 config('app.url')config('filesystems.default')

图片默认将上传到 /upload。将上传路由添加到 routes/web.php

<?php

use Ycs77\LaravelFormBuilderFields\Facades\RichEditorUpload;

// Other routes...

RichEditorUpload::routes();

在富文本编辑器中打开上传图片

$this->add('content', 'rich_editor', [
    'upload_image' => true,
]);

语言设置

resources/lang/{Language}/validation.php

'custom' => [
    'upload_file' => [
        'required' => 'Upload file does not exist',
    ],
],

'attributes' => [
    'upload_file' => 'Upload file',
],

resources/lang/{Language}.json

{
  "Upload error": "Upload error"
}

如果您想修改上传功能,可以扩展 Ycs77\LaravelFormBuilderFields\Http\Controllers\UploadController 以进行修改

<?php

namespace App\Http\Controllers;

use Ycs77\LaravelFormBuilderFields\Http\Controllers\UploadController as BaseUploadController;

class UploadController extends BaseUploadController
{
    // ...
}