![]() |
![]() ![]() |
![]() |
![]()
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 .
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?
Będę wdzięczny za wszelkie wypowiedzi (IMG:style_emoticons/default/smile.gif) Ten post edytował luis2luis 20.11.2022, 09:19:23 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Jak już dodasz wszystkie pola, to na końcu metody `buildForm()` wystarczy zwykła pętla po polach:
Dziękuje, ciekawe rozwiązanie. Symfony zwraca błąd: "Buttons cannot be required". Dziwna sytuacja, ponieważ przekazywana jest wartość 'false' więc not reuired (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
No bo `->all()` zwróci wszystkie pola + button submit. Wrzuć przed `->setRequired()` ifa gdzie sprawdzisz typ i będzie grać.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
No bo `->all()` zwróci wszystkie pola + button submit. Wrzuć przed `->setRequired()` ifa gdzie sprawdzisz typ i będzie grać. Przeleciałem dział dokumentacji Symfony, dotyczący formularzy i nie widzę nigdzie informacji, że na obiekcie FormBuilder mogę wykonać metode all() (IMG:style_emoticons/default/smile.gif) PHPStorm podpowiedział mi, że istnieje metoda $field->getType() ale zwróciła spory obiekt i nie widać w nim informacji o typie pola jaki własnie jest przetwarzany w pętli. Czy metoda getType() jest odpowiednia?
|
|
|
![]()
Post
#6
|
|
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:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
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:
Ten post edytował luis2luis 22.11.2022, 21:43:39 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
No spoko, tylko bazując na `name` musisz pamiętać o tym, że jak się zmieni jego nazwa, to musisz też zmienić to w pętli, a w przypadku klasy pola nie będziesz musiał tego zmieniać.
No i to co wrzuciłeś, to możesz zamienić na to:
Wrzuć może kod z dump jaki dostajesz po wywołaniu metody `getType`. Ten post edytował Salvation 23.11.2022, 09:05:28 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wrzuć może kod z dump jaki dostajesz po wywołaniu metody `getType`. Dump, bez rozwinięcia całości wygląda tak:
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
O widzisz, tego szukałem:
Kod -innerType: Symfony\Component\Form\Extension\Core\Type\DateType Nie mam jak sprawdzić teraz poprawności poniższego kodu, ale powinien za działać...
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
O widzisz, tego szukałem: Kod -innerType: Symfony\Component\Form\Extension\Core\Type\DateType Nie mam jak sprawdzić teraz poprawności poniższego kodu, ale powinien za działać... Dziękuje bardzo za pomoc jeszcze raz (IMG:style_emoticons/default/smile.gif) Teraz kod wygląda dużo lepiej i jest bardziej uniwersalny. Troszeczkę zmodyfikowałem Twój kod i działa. Usunąłem "?->getProxiedType()" i przy klasach zapis "::class"
Gdzie można poczytać o tych metodach np. getInnerType() to jest integralna część Symfony? Znalazłem coś takiego np: https://symfony.com/doc/current/components/...s_resolver.html Ten post edytował luis2luis 24.11.2022, 13:58:39 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Usunąłem "?->getProxiedType()" (...) OK, faktycznie. Masz rację. Tutaj cała klasa: https://github.com/symfony/symfony/blob/6.2...lectorProxy.php Gdzie można poczytać o tych metodach np. getInnerType() to jest integralna część Symfony? Integralna część komponentu. Sam komponent możesz używać poza frameworkiem. A wyżej już podałem link do repo. Znalazłem coś takiego np: https://symfony.com/doc/current/components/...s_resolver.html OptionsResolver, to trochę inny komponent. Ten post edytował Salvation 24.11.2022, 14:33:16 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Przywróć `::class`, bo to przechowuje pełny namespace dla obiektu, a jak wiadomo, klasa może nazywać się tak samo, ale mieć inny namespace i możesz mieć problem... Poczytaj o FQCN (Fully-Qualified Class Name). po przywróceniau ::class Symfony wyrzuca błąd. Cytat syntax error, unexpected token "class", expecting variable or "$"
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tak, już usunąłem głupoty co powypisywałem... (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Tak, już usunąłem głupoty co powypisywałem... (IMG:style_emoticons/default/wink.gif) Dziękuje za pomoc i fatygę, jestem bardzo wdzięczny (IMG:style_emoticons/default/smile.gif) Czy odpłatnie zgodziłbyś się poasekurować przy takim prostym treningowym projekcie Symfony "todo"? Jakieś tam drobne pytania od czasu do czasu? (IMG:style_emoticons/default/smile.gif) Ten post edytował luis2luis 24.11.2022, 14:59:14 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jesteśmy na forum, możesz zakładać tematy do woli. Nie zawsze mam czas na odpisanie pomiędzy 7:00 a 17:00.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 25.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Jesteśmy na forum, możesz zakładać tematy do woli. Nie zawsze mam czas na odpisanie pomiędzy 7:00 a 17:00. ok rozumie (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 21:34 |