2016-09-27 74 views
2

在Symfony中,我想动态验证表单。取决于实体字段的值,我希望启用验证组,在名为“payed”的情况下。我使用下面的代码:Symfony validation_groups如何获取实体值

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'MyBundle\Entity\Account', 
     'validation_groups' => function (FormInterface $form) { 

      // Set always default 
      $valarr = ['Default']; 

      $business = $form->get('business')->getData(); 
      if($business == true) $valarr[] = "business"; 

      // This needs to be added in pending on entity field value 
      if(???) $valarr[] = "payed"; 

      return $valarr; 
     }, 
    )); 
} 

我怎样才能让我的实体是知道在这种形式被激活,进入此功能的控制器?对于商业来说,它可以直接从表单中获得价值。

+0

该方法$ form-> getData()应该返回的对象Account可以试试吗? – Matteo

回答

1

就像Matteo在评论中说的那样,您可以使用$form->getData()->$fieldname来获取该值。

if ($form->getData()->$fieldname === 'my_special_value') { 
    $valarr[] = "payed"; 
} 
+1

哇,它像一个魅力。谢谢 – Learner