2013-07-02 72 views
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表單。

任何想法?? Thansk很多!!!!

回答

1

您還應該在FormularioType類的setDefaultOptions函數中添加'cascade_validation' => true以使其工作。

/** 
* 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 
    )); 
}