Reemplazar form_div_layout.html.twig globalmente

85 views
Skip to first unread message

INHack20

unread,
Jun 6, 2012, 6:49:57 PM6/6/12
to symfony-es
Hola amigos de la comunidad siempre he remplazado las plantillas de
paquetes sin problemas hasta el momento que he querido remplazar
form_div_layout.html.twig ya que no he podido dar con el nombre del
bundle para hacer su respectivo remplazo en la carpeta app/Resources
es muy largo y no he logrado identificar el nombre del bundle.

symfony / src / Symfony / Bridge / Twig / Resources / views / Form /
form_div_layout.html.twig

Nota: remplazo form_div_layout.html.twig solo para modificarle un
pequeño bloque para evitar que escape los label como explica en esta
pagina http://stackoverflow.com/questions/10209345/twig-and-autoescaping
debido a que acentuó las palabras con el tipico í para evitar
algun simbolo extraño si cambia la codificacion utf-8 del archivo a
otra, cuando lo pase a otra computadora.

Gracias de antemano.

Ismael Ambrosi

unread,
Jun 6, 2012, 7:27:52 PM6/6/12
to symfo...@googlegroups.com
Hola,

Tienes que editar la configuración del TwigBundle en app/config/config.yml para usar tu propio template sin tener que modificar el original. De paso te vas a ahorrar un problema al actualizar las dependencias.
Te debe quedar de esta forma:

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources:
            - "AcmeDemoBundle:Form:fields.html.twig"

Esto significa que debes crear template en Acme/DemoBundle/Resources/views/Form/fields.html.twig heredando el original(form_div_layout.html.twig). El contenido de tu template te quedaría así:

{% extends 'form_div_layout.html.twig' %}

{% block field_row %}
{% spaceless %}
<div {{ block('row_container_attributes') }}>
    {{ form_label(form, label|default(null)) }}
    <div class="controls">
        {{ form_widget(form) }}
        {{ form_errors(form) }}
    </div>
</div>
{% endspaceless %}
{% endblock field_row %}

...

Esto es simplemente un ejemplo de un template que tuve que armar para un proyecto que utiliza Twitter Bootstrap. Espero que te sea de ayuda.

Ismael

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es


INHack20

unread,
Jun 7, 2012, 2:02:55 PM6/7/12
to symfony-es
Perfecto hermano me abriste la mente, muchas gracias.

Solucion:
Archivo "fields_global.html"

{% extends 'form_table_layout.html.twig' %}
{% block form_label %}
{% spaceless %}
{% if single_control %}
{% set label_attr = label_attr|merge({'for': id}) %}
{% endif %}
{% if required %}
{% set label_attr = label_attr|merge({'class':
(label_attr.class|default('') ~ ' required')|trim}) %}
{% endif %}
<label{% for attrname,attrvalue in label_attr %} {{attrname}}
="{{attrvalue}}"{% endfor %}>{% autoescape false %}{{ label|trans({},
translation_domain) }}{% endautoescape %}</label>
{% endspaceless %}
{% endblock form_label %}

{% 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 %}>{% autoescape false %}{{ label|trans }}{%
endautoescape %}</label>
{% endspaceless %}
{% endblock %}

Reply all
Reply to author
Forward
0 new messages