我遇到了一些问题。 在我的设置验证中。 我有术语字段,这是必需的(NotBlank约束)。 它工作正常,但当有人正在编辑对象时,我想在此字段上禁用验证;然后它不是必需的,因为有人已经上传了这个文件。当然我在控制器中只有一个表单,一个视图和两个动作。 我该如何处理这种情况?
由于
答案 0 :(得分:0)
您可以通过验证组实现此行为:http://symfony.com/doc/current/book/validation.html#validation-groups
定义如下:
/**
* @Assert\NotBlank(groups={"creation"})
*/
private $terms;
对于您的验证:
$errors = $validator->validate($someVar, null, array('creation'));
创建和
时$errors = $validator->validate($someVar, null, array('edit'));
编辑时。
答案 1 :(得分:0)
您可以使用Callback。
由于验证是在刷新之前进行的,因此您的实体不会拥有id
,请添加如下所示的约束:
class YourEntity
{
// ...
private $term;
/**
* @Assert\Callback
*/
public function validate(ExecutionContextInterface $context)
{
if (!$this->getId() && !$this->getTerm()) {
$context->buildViolation('This field is required!')
->atPath('term')
->addViolation();
}
}
}