Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2]Jak zmodyfikować pola checkbox/radiobutton?
Forum PHP.pl > Forum > PHP > Frameworki
basso
Witam.

Mam taki widok z formularzem który został wygenerowany przez CRUD (patrz kod poniżej). Mam problem, bo chciałbym moc zmodyfikować pola checkxbox które ten formularz posiada.
Wiem, że mogę sobie wyświetlić każde pole formularza oddzielnie tj. {{ form_row(form.gallery) }}, ale nie mogę nic z tym zrobić.. od razu mi wyświetla checkboxy jak sobie chce.
Kojarzy ktoś jak zmodyfikować te pola checkboxów ? Ja chciałbym przy każdym checkbox dodać obrazek, odpytać bazę o obrazki itd... Tutaj w tym przypadku w żaden sposób nie mogę nic z tym zrobić.
Proszę o pomoc.

  1.  
  2. ...
  3. <form id="formularzyk" action="{{ path('pages_create') }}" method="post" {{ form_enctype(form) }}>
  4. {{ form_widget(form) }}
  5. <p>
  6. <button type="submit">Create</button>
  7. </p>
  8. </form>
  9. ...
destroyerr
Ciekawe co na ten temat można znaleźć w dokumentacji...
Dodatkowa podpowiedź: interesuje Cię blok checkbox_widget.
Idąc dalej, skoro chcesz dodać tam obrazek to żeby przekazać jego adres do szablonu, najlepiej będzie dodać własny typ.
basso
Hej, dzięki za podpowiedź.

Nie ma w tym linku co podałeś bloku checkbox_widget. Szukałem już tutaj tego kiedyś i próbowałem robić... ale nie bardzo mi cokolwiek chciało działać. Znaczy 1 z metod mi zadziałała dla innych pól, ale nigdy mi się nie udało, wyświetlić tak jak chcę checkboxa.
Móglbyś mi pokazać gdzie widzisz ten blok?
thek
Tam nie masz na pałę podanego co i jak, tylko wskazanie GDZIE i jak należy to zrobić. Należy bowiem zrobić customowy widget, który "przykryje" domyślne generowanie tego widgetu. Dokumentacja nawet wskazuje jasno, gdzie definicji domyślnego checkbox_widget w symfony2 należy szukać (podpowiem, że użyto tam Bridge w ścieżce). Teraz tylko musisz poczytać nieco dokumentację o custom form fields i poskładać to do kupy.
basso
Hej, no tą dokumentację już tukłem 2 tyg temu.

Nie działa z niej Method 2: Inside a Separate Template, co poruszałem w wątku Temat: SFSF2 Nadpisywanie pol formularza, a na tym by mi najbardziej zależało bo nie lubię mieć burdelu w kodzie.

Ale do rzeczy, no stosując metodę 1 działa mi to do pól textowych i jest cacy ale jak daje do checkbox jak poniżej to nie działa.,

  1. {% form_theme form _self %}
  2.  
  3. {% block checkbox_widget %}
  4. {% spaceless %}
  5. <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
  6. {% endspaceless %}
  7. {% endblock checkbox_widget %}


Tutaj mój widok z działającym wstrzyknięciem w kod zmiany LEAD, któro pięknie śmiga. Jak wstrzyknę checkbox_widget => nie działa. O separate już nie wspominam.

  1.  
  2. {% extends 'BackendCmsBundle::layout.html.twig' %}
  3.  
  4. {% block title %}
  5. {{ parent() }} - Pages Nowy element
  6. {% endblock %}
  7.  
  8. {% block body %}
  9.  
  10.  
  11. {% form_theme form _self %}
  12.  
  13. {% block _backend_cmsbundle_pagestype_lead %}
  14. <div class="backend_cmsbundle_pagestype_lead">
  15. Działa modyfikacja.
  16. {{ form_label(form.lead) }}
  17. {{ form_errors(form.lead) }}
  18. {{ form_widget(form.lead) }}
  19. </div>
  20. {% endblock %}
  21.  
  22.  
  23. <h1>Pages creation</h1>
  24.  
  25. <form id="formularzyk" action="{{ path('pages_create') }}" method="post" {{ form_enctype(form) }}>
  26. {{ form_widget(form) }}
  27. <p>
  28. <button type="submit">Create</button>
  29. </p>
  30. </form>
  31.  
  32. <ul class="record_actions">
  33. <li>
  34. <a href="{{ path('pages') }}">
  35. Wróć do listy
  36. </a>
  37. </li>
  38. </ul>
  39. {% endblock %}



Wiedzie może jak to zmodyfikować?
destroyerr
To zajrzyj do tej dokumentacji i zauważ, że masz tam dwa pliki (dotyczy to metody z osobnym plikiem). Szablon z blokami formularzy i szablon który jest widokiem dla Twojej akcji. W szablonie, który jest widokiem powinieneś nadać formularzowi motyw na podstawie tego dodatkowego szablonu z blokami formularza. Po prostu tak jak jest w dokumentacji, bez żadnego kombinowania. Kod który pokazujesz jest pomieszaniem dwóch metod.
basso
Dzięki, zabrakło mi wtedy 1 linijki:
{% form_theme form 'BackendCmsBundle:Form:fields.html.twig' %}

a w pliku w: BackendCmsBundle:Form:fields.html.twig mam :

  1. pobierz, plaintext
  2. pobierz, plaintext
  3. {% block checkbox_widget %}
  4. {% spaceless %}
  5. ALa ma kota <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
  6. {% endspaceless %}
  7. {% endblock checkbox_widget %}





I działa . Jeszcze jedna rzecz apropo tego. Bo ta metoda tyczy się wszystkich checkboxów które są w tym formularzu no a ja mam tam też inne... np statusy itd.
Chciałbym to zrobić indywidualnie dla konkretnej listy checkboxów w moim przypadku tylko dla checkboxów galerii.

Zatem próbowałem tak:
  1. pobierz, plaintext
  2. pobierz, plaintext
  3. {% form_theme form _self %}
  4. {% block _backend_cmsbundle_pagestype_gallery_widget %}
  5. <div class="text_widget">
  6. {{ block('form_widget_simple') }}
  7. </div>
  8. {% endblock %}




I w polach checkboxa no dla gallery pojawił się jakiś input i array().
Tutaj obrazek:


No pewno dlatego , że tu {{ block('form_widget_simple') }} trzeba zmienić widget, tylko nie wiem na jaki, bo taki {{ block('form_checkbox_widget') }} nie działa . Oczywiście jeszcze z chęcią bym użył metody 2 do tego jak się da, czyli separate, ale wolę najpierw rozkminić to na tej pierwszej. Wiesz może jak to zrobić dla konkretnego pola? Bądź czy ktokolwiek wie...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.