2014-04-23 55 views
0

在symfony2中,我試圖使用回調來驗證表單,但此回調從未被調用過。回調所在的類通過集合在主表單中調用。Symfony2 - 集合上的回調驗證器

這裏是我的代碼...

主要類:

class InscriptionType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('inscriptionReponses','collection',array('label'=>false, 
                  'type'=>new InscriptionReponseType(), 
                  'error_bubbling'=>false, 
                  'by_reference'=>false)) 
     ; 
    } 
} 

InscriptionReponse類:

use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\Validator\ExecutionContextInterface; 

/** 
* InscriptionReponse 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Ptolemee\ColloqueBundle\Entity\InscriptionReponseRepository") 
* @Assert\Callback(methods={"formValidation"}) 
*/ 

class InscriptionReponse 
{ 

    /* ... some code ... */ 

    public function formValidation(ExecutionContextInterface $context) 
    { 
     die('not dying ?'); 
    }  

} 

我不明白什麼是錯的...任何幫助將是非常讚賞。 tahnks。

Nicolas。

回答

0

基礎上寫的是什麼文檔中:

http://symfony.com/doc/current/reference/constraints/Callback.html

,而不是

/** 
* @Assert\Callback(methods={"formValidation"}) 
*/ 

class InscriptionReponse 
{ 

你應該將函數本身

class InscriptionReponse 
{ 

/** 
* @Assert\Callback 
*/ 
    public function formValidation(ExecutionContextInterface $context) 
    { 
     die('not dying ?'); 
    } 

的方法你上面的註釋使用的版本在2.3版本中有效2.4現在可能

+0

你好,謝謝你的回答...確實,我使用2.4,所以我Mvoved註釋。但它仍然無法正常工作......從來沒有傳過回調...... – nikophil

+0

嘗試設置表單選項:'error_bubbling'=> true –

+0

無法以任何一種方式正確或錯誤....:/ – nikophil

1

集合的回調函數在將@Assert \ Valid添加到包含實體中的集合時被調用。

比方說,碑文有InscriptionResponses的集合:

class Inscription 
{ 
    /** 
    * @Assert\Valid() 
    */ 
    private $inscriptionResponses; 
} 

class InscriptionResponse 
{ 
    /** 
    * @Assert\Callback 
    */ 
    public function formValidation(ExecutionContextInterface $context) 
    { 
     die('dying'); 
    } 
} 

這工作的error_bubbling選項的值無關。