我有一个带有属性的实体:
/**
* @var string $name
*
* @Assert\NotBlank(groups={"foobar"})
* @ORM\Column(name="name", type="string", length=225, nullable=false)
*/
private $name;
表格:
class MyType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name');
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => '...',
'validation_group' => array('foobar'),
);
}
public function getName()
{
...
}
}
在Controller中,我绑定了Request并调用$ form-> isValid()
但是如何定义validation_group?
答案 0 :(得分:13)
从FormType类内部,您可以通过设置默认选项来定义与该类型关联的验证组:
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\MyBundle\Entity\MyEntity',
'validation_groups' => array('group1', 'group2'),
);
}
答案 1 :(得分:13)
我有完全相同的问题。我这样解决了......
// Entity
$employee = new Employee();
// Form creation
$form = $this->createForm(new EmployeeForm(), $employee, array('validation_groups'=>'registration'));
我希望有所帮助!
答案 2 :(得分:10)
在控制器中构建表单时,将“validation_groups”项添加到options数组中:
$form = $this->createFormBuilder($users, array(
'validation_groups' => array('foobar'),
))->add(...)
;
在symfony2书的表单页面中对其进行了描述:http://symfony.com/doc/current/book/forms.html#validation-groups
答案 3 :(得分:2)
对我来说,在symfony 2.1上,我通过在validation_groups中添加'Default'来解决它:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\MyBundle\Entity\MyEntity',
'validation_groups' => array('Default', 'registration')
));
}
答案 4 :(得分:1)
我发了一篇与此问题相关的博文:http://marcjuch.li/blog/2013/04/21/how-to-use-validation-groups-in-symfony/
在这篇文章中,我将展示如何使用symfony中的验证组和订单表格的示例,该订单可以提供使用单独的结算和发货地址的可能性。这包括3个步骤:
答案 5 :(得分:0)
您还可以动态定义验证组:
ItemGroup_Item