Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][symfony] Wszystkie pola formularza jako niewymagane, required => false?, oraz jak wstawić dane z requestu do formularza :)
luis2luis
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Witam.

Mam klasę formularza, w Symfony. Jest to wyszukiwarka zaawansowana. Mam problem z dwoma elementami.

1. Jak dla wszystkich pól ustawić parametr 'required' => false, aby nie były wymagane.

Pól jest ponad 20, nie chciałbym do każdego poprostu wkleić tego parametru. Myślałem, żeby w metodzie configureOptions() dodać taką opcje, w końcu jest to metoda do konfiguracji formularza, ale nie działa tak jak ja to robie .
  1. public function buildForm(FormBuilderInterface $builder, array $options): void
  2. {
  3.  
  4. $builder
  5. ->add('namne')
  6. ->add('description', TextareaType::class, ['data' => 'wpisany tekst'])
  7. ->add('deleted')
  8. ->add('prioryty')
  9. ->add('pinned')
  10. ->add('doneAt')
  11. ->add('doneByUser')
  12. ->add('remind')
  13. ->add('wontDo')
  14. .....;
  15. }
  16.  
  17. public function configureOptions(OptionsResolver $resolver): void
  18. {
  19. $resolver->setDefaults([
  20. 'data_class' => Task::class,
  21. 'required' => false, //tak nie działa
  22.  
  23. ]);
  24. }



2. Jak po wysłaniu takiego formularza, wstawić w wypełnione pola dane z requestu. Czyli jak ktos poda date kliknie "wyszukaj", żeby ta data była dalej wpisana w tym polu (IMG:style_emoticons/default/smile.gif)

Formularz wyszukiwarki wyświetlam na roucie /tasks/list/ natomiast parametr action w formularzu odnosi się do /tasks/search/{search_phraze}

Dane te wyświetliłbym za pomocą parametru data.

Jak ten request przekazac do formularza?
  1. public function buildForm(FormBuilderInterface $builder, array $options): void
  2. {
  3.  
  4. $builder
  5. ->add('namne')
  6. ->add('description', TextareaType::class, ['data' => 'wpisany tekst'])
  7. ->add('deleted')
  8. ->add('prioryty')
  9. ->add('pinned')
  10. ->add('doneAt')
  11. ->add('doneByUser')
  12. ->add('remind')
  13. ->add('wontDo')
  14. .....;
  15. }


Będę wdzięczny za wszelkie wypowiedzi (IMG:style_emoticons/default/smile.gif)

Ten post edytował luis2luis 20.11.2022, 09:19:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Salvation
post
Post #2





Grupa: Zarejestrowani
Postów: 406
Pomógł: 73
Dołączył: 15.07.2014

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


Ten "spory obiekt", to na górze ma nazwę tego obiektu. Czyli potrzebujesz użyć operatora `instanceof` do porównania.

Czyli to będzie poprawny kod:
  1. foreach ($builder->all() as $field) {
  2. if (
  3. ($field->getType() instanceof SubmitType::class) ||
  4. ($field->getType() instanceof ButtonType::class) ||
  5. ($field->getType() instanceof ResetType::class)
  6. ) {
  7. continue;
  8. }
  9.  
  10. $field->setRequired(false);
  11. }
Go to the top of the page
+Quote Post
luis2luis
post
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(Salvation @ 21.11.2022, 23:32:33 ) *
Ten "spory obiekt", to na górze ma nazwę tego obiektu. Czyli potrzebujesz użyć operatora `instanceof` do porównania.



Zrobiłem to troszeczke inaczej, ale dziekuje za naprowadzenie (IMG:style_emoticons/default/smile.gif) Nie mogłem dojść, jakiej klasy jest to instancja.
Warunek zrobiłem tak:
  1. if (
  2. ($field->getName() === 'save') ||
  3. ($field->getName() === 'hide')
  4. ) {
  5. continue;
  6. }


Ten post edytował luis2luis 22.11.2022, 21:43:39
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: 14.10.2025 - 12:07