![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 266 Pomógł: 20 Dołączył: 15.11.2006 Skąd: Koszalin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z formularzem w Symfony2, do którego "podpiętą" mam encję. Dodam, iż moja aplikacja jest serwerem RESTowym, także nie zawsze są przesyłane wszystkie pola formularza.
Dziwne jest to, że obiekt $message (moja encja) posiada pole active i jest ono ustawione na true przed submit(), natomiast na false po submit(). $parameters w tym wypadku nie zawiera pola $active, natomiast ja oczekuję, iż wartość domyślna będzie brana z Entity (w tym wypadku jest to obiekt $message). Wiem, że można użyć w submit() drugiego parametru i ustawić go na false, aczkolwiek niewiele mi to daje, gdyż pojawiają się inne problemy. Poniżej zamieszczę klasę formularza, Entity oraz kod walidujący (oczywiście wszystko w wersji skróconej).
Oczekuję tego, iż jeżeli nie podam pola active (a jest to możliwe) to formularz zwróci mi wartość domyślną z entity. -------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 3 Dołączył: 18.10.2012 Skąd: Zagłębie Dąbrowskie Ostrzeżenie: (0%) ![]() ![]() |
wrzuć w formularz domyślną wartość dla pola active
ustawienie wartości domyślnej w entity raczej nic nie daje, bo to wypełniony formularz zapełnia encje danymi które dostał a w tym przypadku jeżeli pola nie ma to pewnie dostaje false |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 266 Pomógł: 20 Dołączył: 15.11.2006 Skąd: Koszalin Ostrzeżenie: (0%) ![]() ![]() |
Niestety to nie pomaga. Znalazłem inne rozwiązanie, dodanie listener'a (https://github.com/adrienbrault/symfony-hateoas-sandbox/blob/master/src/AdrienBrault/ApiBundle/Form/EventListener/ReplaceNotSubmittedValuesByDefaultsListener.php). Aby to zadziałało tak jak chcę muszę ustawić flagę: $ignoreRequiredFields na false. Czy to jest optymalne rozwiązanie dla tego przypadku? ![]() Dodanie: Rozwiązuje również mój problem. Oczywiście cały czas bazuje na implementacji eventa preBind. Ten post edytował c3zi 12.03.2014, 11:51:49 -------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 3 Dołączył: 18.10.2012 Skąd: Zagłębie Dąbrowskie Ostrzeżenie: (0%) ![]() ![]() |
dość dziwne, że nie działa, skoro wysyłasz pole active z domyślną wartością true, entity powinno zapisać tą wartość
jeżeli Twój sposób działa to tylko się cieszyć, mam jeszcze inne rozwiązanie. W klasie formularza możesz dodać:
wtedy jeszcze przed validacją formularza pole active ustawione będzie na true (rozwiązania które podaje są dla s2 > 2.3) Ten post edytował semafor1985 12.03.2014, 12:07:14 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 266 Pomógł: 20 Dołączył: 15.11.2006 Skąd: Koszalin Ostrzeżenie: (0%) ![]() ![]() |
Z tym, że ja chcę, aby domyślnie (jeżeli ktoś nie poda "active") było brane z Entity i tak mój przykład działa. U Ciebie widzę, że "twardo" ustawiasz true.
Jeżeli required ustawię na "false" to widzę, że faktycznie przy niepodaniu wartości jest ona brana z domyślnych ustawień w entity ;-) Anyway thx!! -------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:32 |