Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][SF3] Walidator dla encji formularza
nospor
post 4.07.2017, 09:30:09
Post #1





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 4.07.2017, 09:52:16
Post #2





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

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


Albo UniqueSome2 ustawiasz jako walidator dla obiektu klasy SomeEntity, a nie pola, albo korzystasz z $context (odziedziczone z ConstraintValidator) by przejść po grafie obiektów w odpowiednie miejsce. Polecałbym razczej pierwszą opcję.
Go to the top of the page
+Quote Post
nospor
post 4.07.2017, 09:55:05
Post #3





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Probowalem opcji pierwszej juz wczesniej, ale rzucalo mi bledem ze nie moge ustawic walidatora dla klasy. Nie wykluczone, ze zle za to sie zabralem w takim razie. Jakies wskazowki dokladniejsze?

Co do opcji drugiej to tez probowalem z $context ale nie bylem wstanie znalezc sciezki do mojej glownej klasy. Jakies wskazowki gdzie mialbym tego szukac w $context? smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 4.07.2017, 09:59:06
Post #4





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
nospor
post 4.07.2017, 13:02:38
Post #5





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Misio glodny to i leniwy wink.gif
A na powaznie szukalem ale kurcze ciagle mi uciekalo. Dzieki, postaram sie pozniej sprawdzic info od ciebie i nieomieszkam poinformowac o wynikach smile.gif

edit:
@Crozin dzieki wielkie. Oczywiscie obie metody dzialaja. NIe wiem co za pomrocznosc mialem ze tej drugiej sciezki nie znalazlem... Oczywiscie tak czy siak wybieram metode nr1 bo zgadzam sie z toba, iz to ona tutaj jest odpowiednia smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 10:28