lzakrzewski/symfony-form-generator

基于类元数据的“实时”创建表单的通用解决方案

0.0.3 2016-02-07 14:10 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:13 UTC


README

本软件包增加了基于类元数据(如

  • Form 注释、
  • 类型提示、
  • PHPDoc 注释、
  • 验证器注释)生成 symfony 表单的功能。

创建的表单能够使用原始数据(booleanintegerstringarrayrealdoublefloat)提交。

示例

给定类的对象

use Lzakrzewski\SymfonyFormGenerator\Annotation\Form;
use Symfony\Component\Validator\Constraints as Assert;

class ObjectWithMixedMetadata
{
    /**
     * @var bool
     */
    public $propertyBoolean;

    /**
     * @Assert\Count(max="5")
     */
    public $propertyArray;

    /**
     * @Form\Field("integer", options={"label"="Property Integer"})
     */
    public $propertyInteger;

    public $propertyDateTime;

    public $propertyUndefined;

    public function __construct($propertyBoolean, $propertyArray, $propertyInteger, \DateTime $propertyDateTime, $propertyUndefined)
    {
        $this->propertyBoolean   = $propertyBoolean;
        $this->propertyArray     = $propertyArray;
        $this->propertyInteger   = $propertyInteger;
        $this->propertyDateTime  = $propertyDateTime;
        $this->propertyUndefined = $propertyUndefined;
    }
}

之后

$form = GeneratorFactory::createGenerator()
    ->generateFormBuilder(ObjectWithMixedMetadata::class)
    ->getForm();

将有 form 等效

use Lzakrzewski\SymfonyFormGenerator\Form\Type\GeneratorFormType;
use Lzakrzewski\SymfonyFormGenerator\ObjectWithMixedMetadata;
use Symfony\Component\Form\Forms;

Forms::createFormFactory()->createBuilder()
    ->create('form', new GeneratorFormType(ObjectWithMixedMetadata::class))
    ->add('propertyBoolean', 'checkbox')
    ->add('propertyArray', 'generator_array')
    ->add('propertyInteger', 'integer')
    ->add('propertyDateTime', 'generator_datetime')
    ->add('propertyUndefined', 'generator_string');

generator_array 类型扩展 collectiongenerator_datetime 类型扩展 datetimegenerator_string 类型扩展 text

generator_* 类型是为更好地支持原始值而定义的自定义表单类型。

文档

主题