Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony2] Walidacja formularza bez klasy z polami typu entity
DavidPL
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 27.04.2004
Skąd: Rzeszów

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


Natknąłem się na następujący problem i nie wiem jak sobie z nim poradzić...
Mam formularz który nie jest powiązany z entity... Formularz zawiera pola proste (tekst, data) oraz pola wyboru książki powiązane z entity.

  1. $builder
  2. ->add('id', 'integer', array('label' => 'Nr rezerwacji', 'required' => false))
  3. ->add('name', 'text', array('label' => 'Imię i nazwisko', 'required' => false))
  4. ->add('book', 'entity', array('label' => 'Książka', 'required' => false, 'class' => 'AppBundle:Book', 'choices' => $this->getOrderedBooks()));


Jako parametr choices wchodzi tablica elementów AppBundle:Book.
Formularz ten nie posiada zdefiniowanych walidatorów, natomiast AppBundle:Book posiada walidatory np takiej jak wymagany autor książki czy tytuł.

Teraz problem polega na tym, że podczas walidacji takiego formularza w kontrolerze przez $form->isValid() dostaję informację o błędzie, że np pole autor dla AppBundle:Book jest wymagane.
W jaki sposób można wyłączyć kaskadową walidację dla tego pola?

Ten post edytował DavidPL 1.08.2015, 01:53:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blahy
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

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


1. jesli ksiazka musi miec autora (ma taki walidator) to dlaczego wybrana ksiazka go nie ma? Inaczej, czy w bazie wszystkie ksiazki maja autora?
2. nie widac opcji wiec nie wiem czy masz ustawione cascade_validation, mozesz ustawic cascade_validation na false jesli nie masz innych embedowanych formow, ktore chcesz walidowac
3. uzyc grup walidacji (validation groups) i walidowac tylko to co rzeczywiscie chcesz
4. utworzyc jednak klase ktorej dane reprezentuje ten formularz (z polami id, name i kolekcja ksiazek) i przekazywac jej obiekt do formularza. Wtedy na polu books mozna dac @Assert\Valid() albo go nie dawac (jesli go nie bedzie to elementy w kolekcji nie beda walidowane). Obiekt ten waro miec, bo i tak jesli formularz bedzie poprawny to bedziesz cos z tymi danymi robil, wcale nie musi to byc encja mapowana do bazy danych przez doctrine
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: 13.10.2025 - 08:38