Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][SF3] Walidator dla encji formularza
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Hejka, mam jakas tam encje

  1. class SomeEntity
  2. {
  3. /**
  4.   * @ORM\ManyToOne(....)
  5.   * @ORM\JoinColumn(....)
  6.   */
  7. private $some1;
  8.  
  9. /**
  10.   * @ORM\ManyToOne(....)
  11.   * @ORM\JoinColumn(...)
  12.   * @AcmeAssert\UniqueSome2
  13.   */
  14. private $some2;
  15.  
  16. ...
  17. }


Teraz mam contrait dla some2

  1. class UniqueSome2 extends Constraint
  2. {
  3. public $message = 'Some message';
  4. }
  5.  

ktory to wola walidator

  1. class UniqueSome2Validator extends ConstraintValidator
  2. {
  3. /**
  4.   * @var EntityManager
  5.   */
  6. private $em;
  7.  
  8. public function __construct(EntityManager $em)
  9. {
  10. $this->em = $em;
  11. }
  12.  
  13. public function validate($some2, Constraint $constraint): void
  14. {
  15. ....
  16. }
  17.  
  18. protected function addViolation(Constraint $constraint): void
  19. {
  20. $this->context->buildViolation($constraint->message)
  21. ->addViolation();
  22. }
  23. }

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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. By SomeUnique2 mogło działać dla klasy musi mieć napisaną metodę getTargets(), która powinna zwrócić self::CLASS_CONSTRAINT.
2. Oż Ty leniuszku... http://api.symfony.com/3.1/Symfony/Compone...tInterface.html :-P (np. getRoot()).

Ten post edytował Crozin 4.07.2017, 10:00:06
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 06:29