Symfony3仅在添加对象时验证字段

时间:2016-04-27 10:01:24

标签: php validation annotations entity symfony

我遇到了一些问题。 在我的设置验证中。 我有术语字段,这是必需的(NotBlank约束)。 它工作正常,但当有人正在编辑对象时,我想在此字段上禁用验证;然后它不是必需的,因为有人已经上传了这个文件。当然我在控制器中只有一个表单,一个视图和两个动作。 我该如何处理这种情况?

由于

2 个答案:

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