steevanb/symfony-form-options-builder

使用对象代替数组构建 buildForm()

5.1.0 2024-05-09 08:43 UTC

README

version php symfony Lines Total Downloads Scrutinizer

symfony-form-options-builder

它帮助您编写 Symfony FormType,提供了一些特性和方法,在 buildForm() 中使用对象而不是带有神秘键的数组,以及其他功能。

安装

变更日志

面向对象的 FormType

FormType::buildForm() 面向对象而不是数组

示例

namespace FooBundle\Form\Type;

use Steevanb\SymfonyFormOptionsBuilder\OptionsBuilder\EmailOptionsBuilder;
use Steevanb\SymfonyFormOptionsBuilder\OptionsBuilder\TextOptionsBuilder;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class BarType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        # Since PHP 5.5, you can use FooClass::class
        $builder->add('field_text', TextType::class, TextOptionsBuilder::create()->asArray());

        # Since PHP 5.6, you can use the variadic syntax. asVariadic() parameter is field name.
        $builder->add(
            ...EmailOptionsBuilder::create()
                ->setRequired(false)
                ->setPlaceHolder('default@mail.com')
                ->setTrim(false)
                ->asVariadic('field_email')
        );
    }
}

更多文档

BlockPrefixTrait

添加 getBlockPrefix(),以确保始终为 FormType 的 getBlockPrefix() 方法返回相同的语法:form_type_formtypeclassname

示例

namespace FooBundle\Form\Type;

use Steevanb\SymfonyFormOptionsBuilder\BlockPrefixTrait;

class BarType extends AbstractType
{
    # Use this trait to define getBlockPrefix() required method. It will return form_type_bar
    use BlockPrefixTrait;
}