我正在使用OhDateExtraValidatorBundle,因为我的拉取请求尚未被接受,我需要在本地覆盖它。
我阅读了文档,但无法使其适用于验证器约束。
这是我所做的:
- 创建了一个名为MyDateExtraValidatorBundle的新 Bundle(因此我可以覆盖多个外部包)
添加
getParent()
方法:public function getParent() { return 'OhDateExtraValidatorBundle'; }
将我的修改写在与原始包相同的路径中:
namespace MYVENDOR\MyDateExtraValidatorBundle\Validator\Constraints; use Oh\DateExtraValidatorBundle\Validator\Constraints\DateExtraValidator as ConstraintValidator; class DateExtraValidator extends ConstraintValidator { public function validate($value, Constraint $constraint) { parent::validate($value, Constraint $constraint); if (null === $value || '' === $value){ return; } if(is_object($value) && method_exists($value, '__toString')) { $value = (string) $value; } if (!$dateTime->getTimestamp()) { $this->context->addViolation($constraint->invalidMessage); return; } } }
但它从未加载过。
我还尝试在实体(使用自定义验证器)类中直接使用我的包的名称,但也不起作用。
use MYVENDOR\MyDateExtraValidatorBundle\Validator\Constraints as OhAssert;
=>
The annotation "@MYVENDOR\MyDateExtraValidatorBundle\Validator\Constraints\DateExtra" [...] does not exist, or could not be auto-loaded.
正确的做法是什么?