Symfony - 获取字段约束类中的实体对象

3 php validation constraints symfony symfony-2.8

我创建了自定义约束验证器:

class CustomConstraint extends Constraint
{
    public $message = '';
}

class CustomConstraintValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint)
    {
         exit($this->context->getObject()); // returns null
    }
}
Run Code Online (Sandbox Code Playgroud)

文档中指出:

返回当前验证的对象。

,但对我来说它会返回NULL

PS 我不想将此约束分配给实体,只想分配给某些表单或字段。

我的表单属性已验证:

->add('rejectReasons', null, array(
        'property' => 'name',
        'multiple' => true,
        'constraints' => array(
            new CustomConstraint(array(
                'message' => 'Application can not be refused.'
            )),
        )
    ));
Run Code Online (Sandbox Code Playgroud)

实体中的财产:

/**
 * @ORM\ManyToMany(targetEntity="RejectReason")
 * @ORM\JoinTable(name="relationship_application_reject_reasons",
 *      joinColumns={@ORM\JoinColumn(name="application_id", referencedColumnName="id", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="reject_reason_id", referencedColumnName="id")}
 *      )
 */
private $rejectReasons;
Run Code Online (Sandbox Code Playgroud)

更新

我尝试对其他字符串属性施加约束,但仍然得到NULL.

Pet*_*hko 6

看看ExecutionContextInterface它说:

getObject() 返回当前验证的对象。

如果验证器当前正在验证类约束,则返回该类的对象。如果是验证属性或 getter 约束,则返回属性/getter 所属的对象。

在其他情况下,返回 null。

正如您所看到的,您必须分配给一个类、一个属性或 getter。否则你会得到null.