由于我的项目要求,除了消息之外,我必须为每个约束违规添加一个数字代码。我查看了这个ConstraintViolation
类,发现它确实实现了一个$code
属性,所以这对我的需求来说是完美的……除了我找不到简单的方法来在注释上指定这个代码。
例如,查看Email
约束或其父类是如何实现的,任何地方都没有该代码的迹象,这使得注释无法定义它。
验证器还禁止编码器设置$code
,因为它们没有将第五个参数传递给addValidation
代码本身。
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
所以,我的问题很简单:我错过了什么吗?有没有办法通过不痛苦的注释来设置约束违规代码?理想情况下,我想做这样的事情:
/**
* @Assert\NotBlank(code=400)
* @Assert\Email(code=401)
*/
protected $email;
编辑Constraint.php
以添加$code
属性(作为有效的注释代码)和所有约束验证器以将第五个参数传递给addviolation
似乎是一个糟糕的主意!
当然我可以实现我自己的验证器,但是拥有一组预定义的验证器有什么意义呢?这只是一条线的变化。