Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2]Brak pola w formularzu, Przypisanie null do entity gdy w request nie ma zmiennej
Fluke
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Witam,

Mam mały problem z zapisywaniem danych z formularza.
Mam 3 pola w formularzu: firstname, middlename, lastname:
  1. public function buildForm(FormBuilderInterface $builder, array $options) {
  2. $builder->add('firstname', 'text')
  3. ->add('middlename', 'text')
  4. ->add('lastname', 'text');
  5. }


W widoku generuję sobie tylko 2 np: firstname i lastname. Ale wcześniej w polu middlename została przypisana dana. Gdy nie wyrendreuje pola formularza, to do bazy zostanie przesłany null. Jak uniknąć przypisania tej zmiennej jeśli nie została wysłana w request ?

W skrócie chodzi mi o to, że jak w request nie ma pola 'middlename' to na obiekcie entity nie wywołuje metody np: setMiddlename($middlename);

Może wydać się głupie trochę to pytanie ale wcześniej korzystałem z Zend i tam działało bez zarzutów.

Pozdrawiam

Albo, czy może jest jakaś funkcjonalność do formularza, która pozwala sprawdzić czy dane są prawidłowe ? Jak w Zend była metoda isValid(array $data).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Jest nawet cały dział poświęcony validacji
http://symfony.com/doc/current/book/validation.html
Jeżeli nie chcesz wyświetlić w formularzu pola a co za tym idzie nie chcesz aby było zmienione w bazie użyj form eventow i usun pole.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fluke
post
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Dzięki za odpowiedź, muszę się przyjrzeć tym form event`s bo szczerze mówiąc pierwszy raz o tym słyszę tongue.gif

Ale dalej mam problem z danymi.

Jak w tym event`cie sprawdzić jakie dane zostały przesłane a w jakim stanie był obiekt ?
Go to the top of the page
+Quote Post
Crozin
post
Post #4





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

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


  1. ...
  2. public function buildForm(FormBuilder $builder, array $options) {
  3.  
  4. }
  5. ...
1. Dane początkowe (ustawione przy tworzeniu formularza) masz dostępne pod $builder->getData().
2. Jeżeli potrzebujesz dostać się do danych "wysłanych" przez użytkownika w tej metodzie możesz podpiąć się pod zdarzenie FormEvents::PRE_SET_DATA:
  1. $builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $e) {
  2. if (...) {
  3. $e->getForm()->add(...);
  4. }
  5. });
3. http://symfony.com/doc/current/cookbook/fo...dification.html

Przy czym powyższy scenariusz powinieneś użyć jedynie w przypadku dynamicznych formularzy. Jeżeli już na etapie jego tworzenia wiesz, że nie będziesz potrzebować pola middleName po prostu dodaj dla tego formularz opcję useMiddleName i zareaguj odpowiednio już na etapie początkowego budowania formularza:
  1. public function buildForm(FormBuilder $builder, array $options) {
  2. ...
  3.  
  4. if ($options['useMiddleName']) {
  5. $builder->add('middlename', ...);
  6. }
  7.  
  8. ...
  9. }


Ten post edytował Crozin 28.04.2014, 15:32:45
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Masz ten sam formularz w 2 miejscach questionmark.gif Ze w jednym wyswietlasz 2 pola a w innym 3 questionmark.gif?


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fluke
post
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


A wszystko to po to aby uniknąć nadpisywania danych, które nie podaliśmy np odwołując się przez AJAX.

Np: mamy tablicę: {firstname: 'MyName'} i żeby nie nadpisywał zmienne [lastname, firstname] dając NULL.

W builderze mam formularz z 3 polami,

W widoku np wyświetlam wszystkie 3 pola i jest git. Ale gdy za pomocą AJAX wyślę tylko 1 to żeby pozostałe dane nie zostały naruszone.
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 Aktualny czas: 21.08.2025 - 14:20