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.
看看ExecutionContextInterface它说:
getObject() 返回当前验证的对象。
如果验证器当前正在验证类约束,则返回该类的对象。如果是验证属性或 getter 约束,则返回属性/getter 所属的对象。
在其他情况下,返回 null。
正如您所看到的,您必须分配给一个类、一个属性或 getter。否则你会得到null.