0

我正在尝试在表单中使用 cascade_validation,但它不起作用。我有一个实体 Formulario,其中包含一系列问题,因此我以这种方式将问题表单插入到 Formulario 表单中:

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

        $builder
            ->add('nombre')
            ->add('preguntasPonderadas', 'collection', array(
                'type'   => new QuestionType(),
                'allow_add'=>true,
                'allow_delete'=>true,
                'cascade_validation'=>true,
            ))
        ;       
    }
}

实体问题有一个这样的断言:

class Question
{
    /**
     * @var integer
     * 
     * @Assert\Range(
     *      min = 1,
     *      max = 5,
     *      minMessage = "El valor mínimo es 1",
     *      maxMessage = "El valor máximo es 5"
     * )
     * 
     * @ORM\Column(name="peso", type="integer")
     * 
     */
    private $peso;
}

问题是,如果我从问题表单创建问题,问题实体的范围断言有效,但如果我在 Formulario 表单中创建问题,它不起作用并允许超出范围的数字。空字段约束确实有效,无效类型也有效(例如,如果我写一封信),即使不使用 cascade_validation。

问题是范围约束不适用于 Formulario 表单。

任何想法??非常感谢!!!!

4

1 回答 1

1

您还应该在您的类'cascade_validation' => truesetDefaultOptions功能中添加您的功能FormularioType以使其工作。

/**
 * Sets the default options for this type.
 *
 * @param OptionsResolverInterface $resolver The resolver for the options.
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Formulario',
        'cascade_validation' => true
    ));
}
于 2013-09-24T15:45:22.800 回答