class SomeEntity { /** * @ORM\ManyToOne(....) * @ORM\JoinColumn(....) */ private $some1; /** * @ORM\ManyToOne(....) * @ORM\JoinColumn(...) * @AcmeAssert\UniqueSome2 */ private $some2; ... }
Teraz mam contrait dla some2
class UniqueSome2 extends Constraint { public $message = 'Some message'; }
ktory to wola walidator
class UniqueSome2Validator extends ConstraintValidator { /** * @var EntityManager */ private $em; public function __construct(EntityManager $em) { $this->em = $em; } public function validate($some2, Constraint $constraint): void { .... } protected function addViolation(Constraint $constraint): void { $this->context->buildViolation($constraint->message) ->addViolation(); } }
Jest to standardowy mechanizm walidac pol encji. Dziala ladnie pieknie gdy waliduje pole encji, ktore jest niezalezne w walidacji od innych pol. Niestety podczas walidacji $some2 potrzebuje jeszcze wartosci $some1. Niestetety w metodzie validate() w ostatniej klasie otrzymuje tylko $some2. Idzie jakos sie dobrac do reszty pol z mojej encji?