0

フォームビルダーで属性を定義し、カスタムフィールドでデフォルトと同じ属性を定義すると、他の属性は無視されます。フォームビルダーには次のものがあります:

    $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',
                )
            ))

すべてが期待どおりに機能します。JQDateType() で属性を定義するにはどうすればよいですか? JQDateType::getDefaultOptions() で array_merge() と array_merge_recursive() を使用しようとしましたが、役に立ちませんでした。

4

4 に答える 4

1

これはSymfony2.1で修正されたバグでした。

于 2012-07-26T06:09:39.177 に答える
0

@KoralEntityクラスでアノテーションを使用できるのは'getDefaultOptions'よりも優れていると思います。ここで確認できます:

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

于 2012-05-15T22:40:09.670 に答える
0

はい、フォームのすべてのフィールドをエンティティクラスで直接検証できます。次に例を示します。

/**
 * @Assert\Min(limit = "18", message = "You must be 18 or older to enter")
 */
 protected $age;
于 2012-05-16T20:30:02.523 に答える
0

バグのようですね。https://github.com/symfony/symfony/issuesでチケットを開く必要があります。

于 2012-05-20T11:04:03.090 に答える