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;
}

問題は、質問フォームから質問を作成すると質問エンティティの範囲アサートが機能することですが、フォーミュラリオ フォーム内で質問を作成すると機能せず、範囲外の数値を許可します。cascade_validation を使用しなくても、空のフィールド制約は機能し、無効な型も機能します (たとえば、手紙を書いた場合)。

問題は、フォーミュラリオ フォームから範囲制約が機能しないことです。

何か案が??どうもありがとう!!!!

4

1 に答える 1

1

また、クラスの関数に を追加し'cascade_validation' => trueて、機能させる必要があります。setDefaultOptionsFormularioType

/**
 * 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 に答える