3

こんにちは、フォームのテキスト フィールドのコレクションに問題があります。フィールドの 1 つにエラーがある場合、これらのエラーは親フォームにバブルされるため、フィールドではなく親自体に割り当てられます。次のコードの「ポイント」コレクションです。error_bubbling を false に設定しようとしましたが、効果がありません。

    <?php
    namespace JamaLvova\AdminBundle\Form\Type;

    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use JamaLvova\AdminBundle\Form\Type\ExercisePointsFormType;

    class StartContestFormType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {

            $builder->add('startYear', 'hidden')
                   /*
                       some other form elements
                   */
                    ->add('points', 'collection', array(
                        'type' => 'text',
                        'allow_add' => true,
                        'label' => 'Body za jednotlivé úlohy:',
                        'error_bubbling' => false,
                        'options' => array(
                            'error_bubbling' => false,
                            'attr' => array("maxlength" => "4", "size" => "4")
                        )
                        ));
        }

        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'JamaLvova\AdminBundle\Form\StartContestForm',
            ));
        }

        public function getName()
        {
            return 'startContestForm';
        }
    }

StartContestForm には、次のように記述された $points プロパティがあります。

     /**
     * @Assert\Type(type="integer", message="Hodnota {{ value }} není celé číslo.")
     * @Assert\Range(
     *      min = "0",
     *      max = "",
     *      minMessage = "Body nemohou být záporné",
     *      maxMessage = "Příliš mnoho bodů"
     * )
     */
     private $points;

小枝テンプレートでは、form.points を反復処理すると、フィールドにエラーはありませんが、form.points にはエラーがあります。どこに問題があるのか​​ 誰にも分かりますか?または、何か不足していますか?どうもありがとう:-) (Symfony v. 2.1.4)

編集: 'type' => 'text' の代わりにフォームのコレクション ('type' => new PointsFormType()) を使用すると、何とか期待どおりに動作するようです。特定のフィールドにエラーを割り当てるには、常にフォームのコレクションを使用する必要があるということですか?

4

2 に答える 2