表单集合错误冒泡

Tom*_*žek 4 forms collections symfony

您好,我在表单中收集文本字段时遇到问题。当其中一个字段出现错误时,这些错误会冒泡到父表单中,因此它们不会分配给字段,而是分配给父表单本身。它是下面代码中的“points”集合。我尝试将 error_bubbling 设置为 false,但没有效果。

\n\n
    <?php\n    namespace JamaLvova\\AdminBundle\\Form\\Type;\n\n    use Symfony\\Component\\Form\\AbstractType;\n    use Symfony\\Component\\Form\\FormBuilderInterface;\n    use Symfony\\Component\\OptionsResolver\\OptionsResolverInterface;\n    use JamaLvova\\AdminBundle\\Form\\Type\\ExercisePointsFormType;\n\n    class StartContestFormType extends AbstractType\n    {\n        public function buildForm(FormBuilderInterface $builder, array $options)\n        {\n\n            $builder->add(\'startYear\', \'hidden\')\n                   /*\n                       some other form elements\n                   */\n                    ->add(\'points\', \'collection\', array(\n                        \'type\' => \'text\',\n                        \'allow_add\' => true,\n                        \'label\' => \'Body za jednotliv\xc3\xa9 \xc3\xbalohy:\',\n                        \'error_bubbling\' => false,\n                        \'options\' => array(\n                            \'error_bubbling\' => false,\n                            \'attr\' => array("maxlength" => "4", "size" => "4")\n                        )\n                        ));\n        }\n\n        public function setDefaultOptions(OptionsResolverInterface $resolver)\n        {\n            $resolver->setDefaults(array(\n                \'data_class\' => \'JamaLvova\\AdminBundle\\Form\\StartContestForm\',\n            ));\n        }\n\n        public function getName()\n        {\n            return \'startContestForm\';\n        }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 StartContestForm 中,我有 $points 属性,如下所示:

\n\n
     /**\n     * @Assert\\Type(type="integer", message="Hodnota {{ value }} nen\xc3\xad cel\xc3\xa9 \xc4\x8d\xc3\xadslo.")\n     * @Assert\\Range(\n     *      min = "0",\n     *      max = "",\n     *      minMessage = "Body nemohou b\xc3\xbdt z\xc3\xa1porn\xc3\xa9",\n     *      maxMessage = "P\xc5\x99\xc3\xadli\xc5\xa1 mnoho bod\xc5\xaf"\n     * )\n     */\n     private $points;\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 twig 模板中,当我迭代 form.points 时,没有字段有错误,但 form.points 有错误。有谁知道问题可能出在哪里?或者我错过了什么?非常感谢:-)(Symfony v.2.1.4)

\n\n

编辑:似乎如果我使用表单集合 (\'type\' => new PointsFormType()) 而不是 \'type\' => \'text\',它会按预期工作。这是否意味着我总是需要使用表单集合才能将错误分配给某些字段?

\n

Lee*_*ham 5

您可能需要添加cascade_validation\' => true

\n\n
$builder->add(\'startYear\', \'hidden\')\n       /*\n           some other form elements\n       */\n        ->add(\'points\', \'collection\', array(\n            \'type\' => \'text\',\n            \'allow_add\' => true,\n            \'label\' => \'Body za jednotliv\xc3\xa9 \xc3\xbalohy:\',\n            \'error_bubbling\' => false,\n            \'cascade_validation\' => true,\n            \'attr\' => array("maxlength" => "4", "size" => "4")\n        ));\n}\n
Run Code Online (Sandbox Code Playgroud)\n