Validation Symfony 2中带有参数/参数的自定义验证器/约束

Validation Symfony 2中带有参数/参数的自定义验证器/约束,validation,symfony,Validation,Symfony,我想创建一个类似于GitHub处理删除存储库的方式的验证器。要确认删除,我需要输入回购名称。在这里,我想通过输入实体属性“name”来确认删除。我要么需要将名称传递给约束,要么以某种方式访问它,我该怎么做 您确实可以使用验证器约束来实现这一点: 1:创建删除表单(直接或使用类型): return$this->createFormBuilder($objectToDelete) ->添加('comparisonName','text') ->setAttribute('validation_gro

我想创建一个类似于GitHub处理删除存储库的方式的验证器。要确认删除,我需要输入回购名称。在这里,我想通过输入实体属性“name”来确认删除。我要么需要将名称传递给约束,要么以某种方式访问它,我该怎么做

您确实可以使用验证器约束来实现这一点:

1:创建删除表单(直接或使用类型):

return$this->createFormBuilder($objectToDelete)
->添加('comparisonName','text')
->setAttribute('validation_groups',array('delete'))
->getForm()
;
2:将公共属性
comparisonName
添加到实体中。(或使用代理对象),将映射到上面相应的表单字段。

3:定义类级别的回调验证器约束以比较两个值:

/**
*@Assert\Callback(方法={“isComparisonNameValid”},组={“delete”})
*/
类实体
{
公共美元比较名称;
公共名称;
公共函数isComparisonNameValid(ExecutionContext$context)
{
如果($this->name!=$this->comparisonName){
$propertyPath=$context->getPropertyPath()。.comparisonName';
$context->addViolationAtPath(
$propertyPath,
“无效的删除名称”,数组(),null
);
}
}
}
4:在视图中显示表单:


{{form_rest(deleteForm)}