我想知道是否有可能讓實體管理器在自定義驗證器中訪問存儲庫。獲取自定義驗證器中的實體管理器
我試圖將驗證器聲明爲服務並給出「@ doctrine.orm.default_entity_manager」參數。
但它當然不起作用,因爲很明顯,當我添加我的驗證器作爲實體中的註釋時,我不會調用服務。
有沒有辦法到達我的自定義驗證程序中的存儲庫,我通過實體中的註釋調用來驗證?
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator
class UniqueKeyValidator extends ConstraintValidator {
public function validate($value, Constraint $constraint) {
$entity = $this->context->getRoot()->getData();
... calling entity repository .....
}
}
我的服務:
app.validator.unique:
class: MyBundle\Validator\Constraints\UniqueKeyValidator
arguments: ["@doctrine.orm.default_entity_manager"]
tags:
- { name: validator.constraint_validator }
你可以發表你的驗證程序的代碼?包含配置 – Matteo