Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Symfony2][3] Form validation - sprawdzenie czy entity istnieje
wujek2009
post 10.08.2016, 19:03:49
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Hej,

Stworzyłem formularz, pod który podpiąłem entity - dla którego ustawiłem odpowiednie reguły walidacji (w validation.yml). Mam pole idProduct w regułach - w jaki sposób sprawdzić czy przekazany id_product w formularzu istnieje w tabeli produktów? Nie chce tego robić w kontrolerze tylko dodać odpowiednią regułę w validatiom.yml

Czyli tworzymy wpis w tabeli np. "favourite_user_product" i chce sprawdzić czy idProduct z tej tabeli istieniej w relacji z tabelą "product".

Ten post edytował wujek2009 10.08.2016, 19:04:32
Go to the top of the page
+Quote Post
ohm
post 10.08.2016, 21:16:22
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


Emm, query_builder w formularzu? smile.gif

Ten post edytował ohm 10.08.2016, 21:16:32
Go to the top of the page
+Quote Post
wujek2009
post 11.08.2016, 08:52:30
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Dzięki, zastosowałem to u siebie i działa. Jeszcze potestuje. Tylko czy ja dobrze rozumiem zasadę działania. Pobieramy wszystkie produkty i teraz jeżeli ktoś przekaże id_product spoza tablicy to wyrzuca błąd. Trochę niewydajne jest pobieranie wszystkiego i sprawdzanie czy przekazany id_product znajduje się w tych wszystkich obiektach - da się to inaczej zapisać?

  1. $builder->add('id_product', EntityType::class, array(
  2. 'class' => 'John\ProductBundle\Entity\Product',
  3. 'query_builder' => function(EntityRepository $er) {
  4. return $er->createQueryBuilder('g')
  5. ->orderBy('g.position', 'DESC');
  6. },
  7. 'choice_label' => 'id'
  8. ));


Może da się jakoś dodać do zapytania WHERE id = {ID_Z_FORMULARZA} po przez "use" w funkcji?
Go to the top of the page
+Quote Post
Damonsson
post 11.08.2016, 09:21:22
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


O ile dobrze zrozumiałem co chcesz osiągnąć, to znany problem, ten Bundle powinien Ci go rozwiązać: https://github.com/Gregwar/FormBundle (nie wiem jak z Symfony 3, może jest to już natywnie?)
Go to the top of the page
+Quote Post
wujek2009
post 11.08.2016, 17:44:40
Post #5





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Chcę po prostu sprawdzić czy jeżeli mamy polę np. "Wybierz produkt" to czy użytkownik faktycznie wybrał ID produktu istniejącego czy manipilował w jakiś sposób przy formularzu i próbuje mi wstrzyknąć jakiś złośliwy kod :-)
Tak czy inaczej udało mi się osiągnąć to po przez zwykły zapis:

  1. $builder->add('id_product', EntityType::class, array(
  2. 'class' => 'John\ProductBundle\Entity\Product',
  3. 'choice_label' => 'id'
  4. ));


Więc obyło się bez QB :-)
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: 14.08.2025 - 01:10