micayael/form-generator-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

micayael/form-generator-bundle

最新稳定版本:1.1.0

Composer 安装命令:

composer require micayael/form-generator-bundle

包简介

Bundle para el generar formularios mediante yaml y json

README 文档

README

Symfony 5 Symfony 6 Scrutinizer Quality Score Packagist License Latest Stable Version Total Downloads PHP from Packagist

Introduction

Allows you to generate Symfony forms using YAML, JSON or associative array configurations based on the standard configurations of the framework's forms component.

See: https://symfony.com/doc/current/reference/forms/types.html

It is based on the use of the add function of the form builder used to create forms with Symfony

  1. el name para el input de formulario
  2. el tipo de campo de formulario
  3. un array de options para configurar este tipo de campo
// FormInterface::add($child, string $type = null, array $options = [])
$builder->add($inputName, $inputTypeClass, $inputOptions);

With this it is possible to create a YAML configuration, JSON or an associative array in which:

  • the key represents the $inputName
  • type represents a form $inputTypeClass supported by the
  • bundle or the "fully qualified class name (FQN)" of a class form type
  • the options array represents the form $inputOptions

This allows you to configure forms dynamically by using yaml, json or an associative array like the examples below:

YAML

name:
birthday:
  type: date
  options:
    label: 'Your Birthday'
status:
  type: choice
  options:
    choices:
      Active: A
      Inactive: I
custom_type:
  type: App\Form\Type\CustomType
  options:
    custom_option: value

JSON

{
  "name": null,
  "birthday": {
    "type": "date",
    "options": {
      "label": "Your Birthday"
    }
  },
  "status": {
    "type": "choice",
    "options": {
      "choices": {
        "Active": "A",
        "Inactive": "I"
      }
    }
  },
  "custom_type": {
    "type": "App\\Form\\Type\\CustomType",
    "options": {
      "custom_option": "value"
    }
  }
}

PHP

$formConfig = [
  'name' => NULL,
  'birthday' => [
    'type' => 'date',
    'options' => [
      'label' => 'Your Birthday',
    ],
  ],
  'status' => [
    'type' => 'choice',
    'options' => [
      'choices' => [
        'Active' => 'A',
        'Inactive' => 'I',
      ],
    ],
  ],
  'custom_type' => [
    'type' => 'App\\Form\\Type\\CustomType',
    'options' => [
      'custom_option' => 'value',
    ],
  ],
]

Installation

composer require micayael/form-generator-bundle

Usage

Where it is necessary to create a form, for example a controller or a service, you must inject the FormGenerator object provided by the bundle.

class HomeController extends AbstractController
{
    /** @required */
    public FormGenerator $formGenerator;

    public function __invoke(Request $request): Response
    {
        $formConfigArray = []; // configuration as associative array

        // Gets a FormInterface object with the configured form
        $form = $this->formGenerator->createForm($formConfigArray);

        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()){
            $formData = $form->getData();

            // process your form
        }
    }

The FormGenerator service provides the following methods:

  1. FormGenerator::createForm(array $formConfig, array $formOptions = [], $data = null, string $baseFormTypeClass = null, string $groupName = null): Creates a form from an associative array
  2. FormGenerator::createFormFromJson(string $formConfigJson, array $formOptions = [], $data = null, string $baseFormTypeClass = null, string $groupName = null): Creates a form from a json string
  3. FormGenerator::createFormFromYaml(string $formConfigYaml, array $formOptions = [], $data = null, string $baseFormTypeClass = null, string $groupName = null): Creates a form from a yaml string

Method arguments

  1. array $formConfig: form configuration
  2. array $formOptions = []: custom form options
  3. $data = null: form data
  4. string $baseFormTypeClass = null: Form class (FQN) that will be used as the base to add the other fields. If not passed, they are added to an empty form.
  5. string $groupName = null: name that will be used to group the fields created by the $formConfig argument as an embeded form

Development

Install dependencies

composer install

Testing

vendor/bin/phpunit

Code Review

vendor/bin/phpstan analyse src tests --level 5
vendor/bin/phpmd ./ text .phpmd-ruleset.xml --exclude var,vendor

统计信息

  • 总下载量: 6.82k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-02-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固