![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Framework symfony2 ma fajną opcję automagicznego budowania formularzy.
Mogę np. jednym poleceniem utworzyć sobie grupę checkoxów, czy radiobuttonów z polami z bazy. Tutaj mały example znaleziony w sieci obrazujący co mam na myśli
W jaki sposób teraz mam skonsturować templatkę, tak aby pomiędzy radiobuttonami (czy tam checboxami - w zależności od parametrów które podam) mogę umieścić jakieś elementy html ? Na przykład diva ? Czyli chcę osiągnąć taki efekt : -------------------- :)
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 25 Dołączył: 28.09.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
no w widoku oczywiście jeśli używasz twiga to chyba tak to leci
Kod {{ form_row('form.nazwa_pola') }} no i wyświetlając tak input każdy osobno możesz wcisnąć miedzy nie co uważasz Ten post edytował usb2.0 17.07.2012, 17:24:27 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo.
-------------------- :)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 395 Pomógł: 80 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedzi, ale po ponownym przeczytaniu tego artykułu nie jestem w stanie rozwiązać swojego. Albo tam nie ma informacji o tym, jak mój problem rozwiązać, albo po prostu nie potrafię go tam wyszukać. Czy mogę po prosić o bezpośredni link do przykładu
![]() wiem, że form_row mogę sobie rozdzielić na form_widget, label, oraz errors. Ale jak rozdzielić form_widget któro wyświetla mi kilka radiobuttonów/checkboxów na pojedyncze radiobuttony/checkboxy ? -------------------- :)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Żeby wstawić coś pomiędzy renderowane checkboksy/radio-buttony musiałbyś dla tego elementu formularza nadpisać widget form_field. Jednakże takie coś podejrzanie pachnie błędnym modelem danych - potrzeba wstawienia czegoś pomiędzy serię checkboksów jest bardzo nietypowa. Mógłbyś przybliżyć nam strukturę/przeznaczenie tego formularza?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
To ma być "formularz wyceny" dla firmy robiącej strony www. W tym formularzu są różne pola tekstowe, checkboxy, radiobuttony. Po kliknięciu w niektóre radiobuttony pojawiają się inne inputy. Dość to rozbudowane.
Jest sobie dla przykładu "projekt graficzny" i 3 opcje (radio) do wyboru. Po zaznaczeniu jednej z opcjii pojawiają się kolejne pola. Są one różne w zależności od zaznaczenia. w chwili obecnej jest tak, że te "kolejne pola" pojawiają się pod tymi trzema opcjami... no i to działa. Ale prezes sobie zarzyczył, że jak zaznaczę pierwszy radiobutton, to te dodatkowe pola mają się ukazać między pierwszym a drugim radiobuttonem. mam nadzieję, że za mocno nie pokręciłem. -------------------- :)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Z punktu widzenia wygody obsługi takiego formularza jest to idiotyczny pomysł, ale mniejsza z tym. Zapewne i tak korzystasz tam z JS do pokazywania kolejnych elementów formularza, tak? To przy pomocy JS przenieś resztę pól w odpowiednie miejsce - tak będzie szybciej i wygodniej.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak. Przeniesienie pól jsem to oczywiste rozwiązanie, ale liczyłem na coś bardziej po stronie symfony.
No ale... skoro mówisz, że nie da rady, to zostanę przy JS. Dzięki za odpowiedź. -------------------- :)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 395 Pomógł: 80 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jako przykład mogę podać dodawanie br-ki i tekstu przed każdym nowym polem radio.
Klasa formularza tu a szablon tu Za pomocą Kod {% form_theme form _self %} wymuszam wyszukiwanie nadpisanych bloków w tym samym szablonie w którym znajduje się mój wyświetlany formularz, wszystko jest objaśnione w linku który podałem wcześniej ( metoda pierwsza ). Sam formularz wyświetla 5 przycisków radio, jako że nadpisałem domyślny szablon zamiast wyświetlać blok z pliku używany jest mój.Cała trudność polega na wybraniu odpowiedniego bloku do nadpisania. Trochę się spóźniłem i rozwiązanie z javascriptem będzie lepsze/szybsze choć nadpisywanie bloków widgetów wewnątrz innych nadpisywanych bloków pewnie by się udało to jest to rozwiązanie zbyt skomplikowane. Ten post edytował toffiak 17.07.2012, 21:01:49 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@toffiak: Tutaj większym problemem było to, że wewnątrz bloku radio_widget nie wystarczyło podać statycznego kodu HTML, a należało wygenerować inne pola z formularza - o ile dobrze kojarzę, takie coś mogłoby już być nieco problematyczne i napakowane różnymi hackami.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje wam za odpowiedzi
![]() Zostanę chyba przy javascripcie, bo wydaje mi się, że po prostu łatwiej będzie mi w nim to zrobić. Symfony2 uczę się dopiero od 2 tygodni. http://www.yewchube.com/2011/08/symfony-2-...form-templates/ http://forum.symfony-project.org/viewtopic...=23&t=35769 Tutaj znalazłem kod za pomocą którego mogę zmienić "label" formularza (tak przynajmniej mi się wydaje ![]() zrobiłem takie coś :
To wyświetla dla każdego radiobuttona taki sam label, bo zmiennych żadnych nie ma. Chciałem dodać {{label}} tak jak w examplu, ale mam błąd, że takiego czegoś twig nie zna. Czy mogę prosić o podanie "oryginalnej" wersji radio_label, którą następnie będę mógł zmodyfikować ? Generalnie chodzi mi tylko o dodanie obrazka na końcu każdego label'a edit:// takie coś też nie hula :/ Kod {% block radio_label %} {% spaceless %} {{ block('base_field_label') }} <img class="tooltipek" src=" {{asset('help.png')}}"/> <br> {% endspaceless %} {% endblock radio_label %} moja ikonka się pokazuje, ale poza tym nic. TO {{ block('base_field_label') }} niczego nie wyświetla. Ten post edytował peter13135 19.07.2012, 09:07:45 -------------------- :)
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Domyślne szablony elementów formularzy: https://github.com/symfony/symfony/tree/mas...rces/views/Form. Korzystając z Twiga masz dostęp do dokładnie tych samych zmiennych.
Ten post edytował Crozin 19.07.2012, 09:24:12 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź, jednak ja nadal nie potrafię tego wykorzystać. Znalazłem tam np. field_label
Ale radio label już nie ma. Piszesz, że mam dostęp do dokładnie tych samych zmiennych. O jakich zmiennych piszesz ? ![]() Takie coś : {{block(form_label)}} Mi nie działa. Kod {{ block('field_label')}} Takie coś mi działa, ale.. jak dam kod obrazka pod tym, to jest on pod label'em, a chciałbym, żeby był on obok niego :/ -------------------- :)
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To już kwestia odpowiedniego ostylowania tego w CSS-ie.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
OK poradziłem sobie.
A czy da się jakoś "wyciągnąć" atrybut for z label'a Chciałbym go wrzucić jako id w img w nieco zmienionej formie. czyli chcę taki efekt uzyskać : Ten post edytował peter13135 19.07.2012, 10:27:26 -------------------- :)
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
https://github.com/symfony/symfony/blob/mas...widget.html.php
Jak widzisz atrybuty dla elementu <input /> są renderowane przez kolejny blok - attributes - a tam widać, że jest dostęp do zmiennej $id, która przechowuje w tym przypadku poszukiwane przez Ciebie tooltip_valuationform_graphicProject_0. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Doszedłem do takiego czegoś :
Kod {{ block('widget_attributes') }} Co wyświetla Kod id="valuationform_graphicProject_0" name="valuationform[graphicProject]" required="required" Ale... jak wyciągnąć wartość samego id ? Ten post edytował peter13135 19.07.2012, 10:45:59 -------------------- :)
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
No to rzuć jeszcze okiem na to co wyświetla "widget_attributes" i z jakich zmiennych korzysta - pisałem już przecież o tym post wcześniej.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 25 Dołączył: 28.09.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
tak może żeby nie spamić, pozwolę zadań sobie pytanie w Twoim temacie;)
odnośnie walidacji takiego formularza, załóżmy że w akcji index tworzę cały formularz, pojawia się tam metoda bindRequest ()i isValid(), reguły walidacji mam napisane w yaml'u. No i oczywiście, jeśli dane z formularza są poprawne chce przekazać je do innej akcji przez action w formularzu. No i tu sie rodzii problem, jeśli mam action do akcji innej niż index, to walidacja nie działa, natomiast jeśli action w ogole nie ma, lub jest to index/# to jest dobrze. Co to może byc? ![]() wygłupiłem sie sory;P Ten post edytował usb2.0 19.07.2012, 15:55:21 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.08.2025 - 17:58 |