2012-01-06 18 views
7

Quiero tema de mi solicitud de manera que la etiqueta del campo muestran la localización actual, algo así como¿Cómo pasar una variable a form_theme?

Nombre (es):

así que me gustaría volver a escribir generic_label bloque así:

{# 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 %} 

y la importación en mi plantilla:

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

pero no se puede acceder a la variable de la aplicación en la plantilla de formulario. ¿Cómo puedo pasar una variable a un tema de formulario?

Respuesta

0

Si la variable app no está disponible en el tema del formulario, puede tratarse de un error. Te sugiero create a ticket.

Mientras tanto, puede utilizar la plantilla actual como tema. Algo así como ...

{% 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 %} 

Si está usando Symfony maestro (2.1) reemplazar app.session.locale con app.request.locale.

+0

que no funciona bien, '{% form_theme edit_form _self%} {% block field_label%} {{{}} app.session.locale% endblock%}' 'da variable "aplicación" no existe' Voy a crear un ticket – Matthieu

+0

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

3

En la versión actual de ramitas (como para 2016) es posible. En su plantilla usa la siguiente así:

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

A continuación, en el archivo de tema, sólo tiene que utilizar:

{{testvar}} 

, por supuesto, en lugar de form.content que va a utilizar el nombre del campo que necesita. Cheers, Chris

Cuestiones relacionadas