Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][Symfony]Własna walidacja formularza
Lirdoner
post
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Witam, posiadam rozbudowany formularz który powinien być walidowany zależnie od innych pól tego formularza.
Formularz ma dodane takie pola:
  1. $builder
  2. ->add('category', EntityType::class, array(
  3. 'label' => 'Kategoria',
  4. 'class' => 'AppBundle:Category',
  5. 'choice_label' => 'title'
  6. ))
  7. ->add('imageChoiceType', ChoiceType::class, array(
  8. 'label' => 'Typ grafiki',
  9. 'mapped' => false,
  10. 'choices' => array(
  11. 'Link do obrazka' => 1,
  12. 'Z dysku' => 0
  13. ),
  14. 'required' => false
  15. ))

Chciałbym aby jeżeli pole "category" ma wartość 2 to pole "imageChoiceType" aby było wymagane i miało wartości albo 0 albo 1.
Encja na której opiera się formularz nie ma właściwości $imageChoiceType. Pole to jest mi potrzebne tylko do walidacji dalszych pól.

Aktualna obsługa formularza to standardzik:
  1. $item = new Item();
  2.  
  3. $form = $this->createForm(newItemType::class, $item);
  4. $form->handleRequest($request);
  5.  
  6. if($form->isSubmitted() && $form->isValid()) {
  7.  
  8. }


Czytałem http://symfony.com/doc/current/reference/c...s/Callback.html jednak nie pomogło mi to ponieważ z poziomu encji nie mam dostępu do pola imageChoiceType (pole nie jest mapowane)
Jak to rozwiązać?
Go to the top of the page
+Quote Post
Kofel
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

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


Twój constraint powinien zostać założony na cały formularz, a nie tak jak to Ty próbujesz zrobić, na konkretne pole - to nie ma sensu.

Czyli w configureOptions:
  1. $resolver->setDefaults([
  2. 'constraints' => [
  3. new RequiredIfValue(['field' => 'category', 'fieldValue' => 2, 'requiredField' => 'imageChoiceType')
  4. ]
  5. ]);


RequiredIfValue oczywiście nie ma implementacji. To jest tylko proof of concept, aby Cię naprowadzić
Go to the top of the page
+Quote Post

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: 22.08.2025 - 19:35