Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][symfony2] Wyświetlanie formularza
Forum PHP.pl > Forum > PHP > Frameworki
peter13135
Tak wygląda jeden z moich plików tpl (prawda, że uroczy ? ). On elegancko działa, ale chce go rozbudować.
  1. {%extends 'AdmFormBundle:layouts:base.html.twig'%}
  2.  
  3.  
  4. {% form_theme form _self %}
  5.  
  6. {% block field_row %}
  7. <div class="control-group ">
  8. <div>
  9. {{form_label(form, null, { 'attr': {'class': 'control-label'} } )}}
  10. </div>
  11. <div class="controls">
  12. {{form_widget(form)}}
  13. </div>
  14. <div class="error">
  15. {{form_errors(form)}}
  16. </div>
  17. </div>
  18. {% endblock %}
  19.  
  20. {% block body %}
  21.  
  22. <form class="form-horizontal" method="post" {{ form_enctype(form) }}>
  23. {{ form_errors(form) }}
  24.  
  25. {%for f in form %}
  26. {{ form_row(f) }}
  27. {%endfor%}
  28.  
  29. {{ form_rest(form) }}
  30. <div class="controls">
  31. <input type="submit" value="{{formDefinition.buttonText}}" class="btn {{buttonStyles[formDefinition.buttonStyle]}}" />
  32. </div>
  33. </form>
  34.  
  35. {%endblock%}




Chciałbym pod każdym inputem mieć możliwość wyświetlenia małego tekstu, opisującego po co to pole właściwie istnieje.

Czyli w skrócie chodzi mi o coś takiego :

  1. {% form_theme form _self %}
  2.  
  3. {% block field_row %}
  4. <div class="control-group ">
  5. <div>
  6. {{form_label(form, null, { 'attr': {'class': 'control-label'} } )}}
  7. </div>
  8. <div class="controls">
  9. {{form_widget(form)}}
  10. </div>
  11. <div class="smallText"> {{form_description(form)}} </div>
  12. <div class="error">
  13. {{form_errors(form)}}
  14. </div>
  15. </div>
  16. {% endblock %}


Ale jak wiadomo, nie istnieje taka metoda jak form_description, więc to tylko taki pseudokod.
W jaki sposób takie coś osiągnąć ? Czy jest możliwość dodawania jakichś swoich własnych wartości do takiego formularza ? A może da się w pliku tpl odczytać nazwę pola ?
m44
Możesz to zrobić na dwa sposoby. Pierwszy to napisania swojego własnego rozszerzenia do formularzy, tak żeby mógł z niego korzystać FormBuilder.
O tym jak to zrobić możesz poczytać tutaj:

http://toni.uebernickel.info/2011/11/25/ho...n-symfony2.html

Wtedy będziesz mógł korzystać z opcji "help" lub innej w w Twigu.

Inna możliwość, to odwoływanie się do tłumaczenia poprzez "trans" w ten sposób, że ścieżką do tłumaczenia będzie nazwa "nazwa_formularza.nazwa_pola".
Wtedy automatycznie będzie szukało dodatkowego opisu w plikach tłumaczeń. Możesz również obie metody połączyć.

Zwróć jednak uwagę, że w przykładzie autor wpisu używał Symfony 2.0. Od wersji 2.1 zmieniły się trochę formularze, wiele rzeczy zostało rozbite na interfejsy. Być może będziesz musiał trochę zmodyfikować kod.
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.