我遇到了一些问题。在 enitity 中,我设置了验证。我有术语字段,这是必需的(非空白约束)。它工作正常,但是当有人编辑对象时,我想禁用此字段的验证;那么这不是必需的,因为有人已经上传了这个文件。当然,我在控制器中只有一个窗体、一个视图和两个操作。我该如何处理这种情况?
谢谢
你可以为此使用回调。
由于验证是在刷新之前进行的,因此您的实体不会有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();
}
}
}
您可以通过验证组来实现此行为: 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'));
编辑时。