Symfony 2使用依赖项进行表单验证

时间:2011-08-03 20:47:29

标签: forms validation symfony

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

class Entity
{
    // boolean type
    protected $is_public;
    // hashed string
    protected $password;
}

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

你如何使用symfony2框架附带的验证器做到这一点?有没有办法实现我的目标?

提前谢谢你,

岸堤

2 个答案:

答案 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);