Forms 带依赖项的Symfony 2表单验证

Forms 带依赖项的Symfony 2表单验证,forms,validation,symfony,Forms,Validation,Symfony,我有一个包含2个字段的实体(当然还有一些字段,但为了简单起见,只有2:): 现在,我需要在symfony 2中为该实体创建一个表单,该表单在密码字段上具有以下依赖项: 当用户单击$is_public复选框时,他不必输入密码。另一方面,当用户希望实体(在我的示例中是用户组)为非公共时,他必须输入至少包含N个字符的密码 对于symfony2框架附带的验证器,您将如何做到这一点?有没有办法实现我的目标 提前谢谢大家, Andi我发现的唯一方法是创建一个自定义的约束,使用类约束,您可以访问对象的所有属性

我有一个包含2个字段的实体(当然还有一些字段,但为了简单起见,只有2:):

现在,我需要在symfony 2中为该实体创建一个表单,该表单在密码字段上具有以下依赖项: 当用户单击$is_public复选框时,他不必输入密码。另一方面,当用户希望实体(在我的示例中是用户组)为非公共时,他必须输入至少包含N个字符的密码

对于symfony2框架附带的验证器,您将如何做到这一点?有没有办法实现我的目标

提前谢谢大家,


Andi

我发现的唯一方法是创建一个自定义的
约束
,使用类约束,您可以访问对象的所有属性

看看这些课程:


您可以指定一个在验证时调用的回调函数,并让它执行任何您想要的操作。以下是文件:

请注意,如果使用的是翻译,还可以在addViolation调用中指定字符串键

$context->addViolation(
  'Acme\DemoBundle\Entity\MyEntity.entityField.validationErrorString1',
  array(), null);
$context->addViolation(
  'Acme\DemoBundle\Entity\MyEntity.entityField.validationErrorString1',
  array(), null);