2012-01-06 3 views
7

Я хочу тему своей формы таким образом, чтобы метка поля показывает текущую локаль, что-то вродеКак передать переменную form_theme?

Имени (EN):

Так что я хотел бы переписать блок generic_label так:

{# form_theme.html.twig #} 

{% block generic_label %} 
{% spaceless %} 
    {% if required %} 
     {% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %} 
    {% endif %} 
    <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>{{ label|trans }} (app.session.locale)</label> 
{% endspaceless %} 
{% endblock %} 

и импортировать его в моем шаблоне:

{% form_theme options 'myBundle:Object:form_theme.html.twig' %} 

, но переменная app недоступна в шаблоне формы. Как передать переменную в тему формы?

ответ

1

Вам необходимо создать расширение формы, чтобы сделать это. Посмотрите на

http://toni.uebernickel.info/2011/11/25/how-to-extend-form-fields-in-symfony2.html

, чтобы узнать, как создать расширение.

Чтобы иметь доступ к языку локализации, обязательно закачайте контейнер. После этого вы сможете получить любое значение var, которое вы хотите.

0

Если переменная app недоступна в форме темы, это может быть ошибка. Я предлагаю вам create a ticket.

А пока вы можете использовать текущий шаблон в качестве темы. Что-то вроде ...

{% form_theme form _self %} 

{% block field_label %} 
    {% set attr = attr|merge({ 'for': id }) %} 
    {% if required %} 
     {% set attr = attr|merge({ 'class': attr.class|default('') ~ ' required' }) %} 
    {% endif %} 
    <label{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans }} ({{ app.session.locale }})</label> 
{% endblock %} 

Если вы используете мастер Symfony (2.1) заменить app.session.locale с app.request.locale.

+0

что не работает либо, '{% form_theme edit_form _self%} {% блок FIELD_LABEL%} {{app.session.locale}} {%}% концевым блоком' 'дает Variable "приложение" не существует'. Я собираюсь создать билет – Matthieu

+0

https://github.com/symfony/symfony/issues/3058 – Matthieu

3

В текущей версии ветки (как на 2016 год) это возможно. В шаблоне используйте следующий так:

{{ form_row(form.content, {'testvar' : 'this is test variable'}) }} 

Затем в файле темы, просто используйте:

{{testvar}} 

конечно вместо form.content вы будете использовать имя поля вам нужно. Приветствия, Chris