我有一个有2个字段的实体(当然还有一些,但为了简单起见只有2个:) :):
class Entity
{
// boolean type
protected $is_public;
// hashed string
protected $password;
}
现在我需要symfony 2中的一个表单,该表单对密码字段具有以下依赖关系: 当用户单击$ is_public的复选框时,他不必输入密码。另一方面,当用户希望实体(在我的情况下是用户组)为非公开时,他必须输入至少包含N个字符的密码。
你如何使用symfony2框架附带的验证器做到这一点?有没有办法实现我的目标?
提前谢谢你,
岸堤
答案 0 :(得分:2)
我找到的独特方法是创建一个自定义Constraint
,通过类约束,您可以访问对象的所有属性。
看看这些课程:
用您的逻辑创建自己的。
答案 1 :(得分:0)
您可以指定在验证时调用的回调函数,并使其完成任何您想要的操作。以下是文档:
http://symfony.com/doc/current/reference/constraints/Callback.html
请注意,如果您使用翻译,还可以在addViolation调用中指定字符串键。
$context->addViolation(
'Acme\DemoBundle\Entity\MyEntity.entityField.validationErrorString1',
array(), null);