FormType 中的实体 属性 定义

Entity property definitions in FormType

有没有办法在 Formtype 中获取实体 属性 定义?

我问它,因为我想将 maxlength 集成到我的表单类型中,但不想两次定义 maxlength(一次在 Entity 中,一次在 FormType 中)

目前我的定义是

实体

/**
 * @ORM\Column(type="string", length=25, nullable=true)
 * @Assert\length(
 *     max = 25,
 *     maxMessage = "text.zu_lang"
 * )
 * @Assert\NotBlank()
 */
private $ident;

表单类型:

    ->add('ident', TextType::class, [
        'label' => 'ident.name',
        'help' => 'ident.help',
        'attr' => [
            'maxlength' => 25
        ]
    ])

这可能吗?我知道,我可以定义常量并通过 FormType 中的 $options['data_class'] 调用它们,但后来我什至必须定义最大长度两次(仅在 Entity 中使用这种方式)

一旦你的实体中有了验证元数据,Symfony 就可以尝试猜测一些验证规则和字段的类型。您所要做的就是从您的字段创建中省略 field typemaxlength 规则:

    ->add('ident', null, [
        'label' => 'ident.name',
        'help' => 'ident.help'
    ])

这样,Symfony 将在实体内部寻找一个名为 ident 的 属性 并检查其注释说:我找到了一个具有验证规则 NotBlankstringLength,所以我将创建一个 TextType 字段,即 requiredmaxlength = 25

您可以在 Symfony 的文档中获得更多详细信息:Field Type Options Guessing