Symfony2表单在构建器中定义的相同时忽略自定义字段中的属性

时间:2012-05-15 20:01:11

标签: forms symfony custom-controls symfony-forms

当我在表单构建器中定义属性并将相同属性定义为自定义字段中的默认值时,将忽略另一个属性。在表单构建器中,我有:

    $builder
            ->add('validityOfADecisionOnDisability', new JQDateType(), array(
                'attr' => array(
                    'rel' => 'permanent',
                )
            ))

和自定义字段

class JQDateType extends AbstractType {

public function getDefaultOptions(array $options)
{
    return array(
        'widget' => 'single_text',
        'format' => 'yyyy-MM-dd',
        'attr' => array(
            'class' => 'datepicker'
        )
    );
}

并呈现html

<input type="text" rel="permanent" required="required" 
  name="profile[validityOfADecisionOnDisability]" 
  id="profile_validityOfADecisionOnDisability">

没有上课。但是当我在构建器

中向属性添加类时
    $builder
            ->add('validityOfADecisionOnDisability', new JQDateType(), array(
                'attr' => array(
                    'rel' => 'permanent',
                    'class' => 'datepicker',
                )
            ))

eevrything按预期工作。我应该如何在JQDateType()中定义属性?我试图在JQDateType :: getDefaultOptions()中使用array_merge()和array_merge_recursive(),但它没有帮助。

4 个答案:

答案 0 :(得分:1)

这是Symfony 2.1中修复的错误。

答案 1 :(得分:0)

@Koral我猜你可以在你的Entity类中使用注释比'getDefaultOptions'更好,你可以在这里看到:

http://symfony.com/doc/current/book/validation.html

答案 2 :(得分:0)

是的,您可以直接在实体类中验证表单的所有字段,例如:

/**
 * @Assert\Min(limit = "18", message = "You must be 18 or older to enter")
 */
 protected $age;

答案 3 :(得分:0)

听起来像个臭虫。您应该在https://github.com/symfony/symfony/issues

上打开一张票