在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。
尼古拉斯。
答案 0 :(得分:1)
将@Assert \ Valid添加到包含实体中的集合时,将调用该集合的回调函数。
假设Inscription有一系列InscriptionResponses:
class Inscription
{
/**
* @Assert\Valid()
*/
private $inscriptionResponses;
}
class InscriptionResponse
{
/**
* @Assert\Callback
*/
public function formValidation(ExecutionContextInterface $context)
{
die('dying');
}
}
无论error_bubbling选项的值如何,这都有效。
答案 1 :(得分: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