Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][SF2]Jak zmodyfikować pola checkbox/radiobutton?
basso
post 3.06.2013, 11:50:02
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


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. ...
Go to the top of the page
+Quote Post
destroyerr
post 3.06.2013, 13:30:16
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


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.
Go to the top of the page
+Quote Post
basso
post 3.06.2013, 20:23:26
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


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?
Go to the top of the page
+Quote Post
thek
post 3.06.2013, 21:09:08
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
basso
post 4.06.2013, 14:32:30
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


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ć?
Go to the top of the page
+Quote Post
destroyerr
post 4.06.2013, 16:04:19
Post #6





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


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.
Go to the top of the page
+Quote Post
basso
post 4.06.2013, 19:14:27
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


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...?

Ten post edytował basso 5.06.2013, 08:27:08
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 10:30