Contenido repetido en twig
Publicado por José (1 intervención) el 19/03/2018 19:49:14
Estoy usando Symfony y twig. Tengo una vista que depende de un layout llamado admin_layout.html.twig, cuyo código es el siguiente:
Como veis, hay un bloque llamado page_content, anidado dentro de otro bloque, llamado content.
La vista que extiende de este layout es muy simple:
Todo parece ir bien al cargar la página, pero el problema es que el código HTML está repetido. Si muestro el código en el navegador, veo algo como esto:
Es decir, el HTML <h1>Main Page</h1 aparece dos veces. Una en su sitio y otra fuera del div TMPT_mainContentArea. Ya me he asegurado de que en la vista sólo está en un sitio, y no está en ninguna otra parte del código, ni en el layout, ni en el controlador, ni en ningún sitio más.
Podeis darme alguna pista?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{% extends 'base.html.twig' %}
{% block title %}{% endblock title %}
{% block stylesheets %}
{#Por si cargaramos estilos desde base.html.twig#}
{{ parent() }}
{# CSS propios de la plantilla de admin #}
<link rel='stylesheet' href='{{ asset('bundles/app/css/admin/template_base_styles.min.css') }}' />
{% endblock stylesheets %}
{% block body %}
{#Por si cargamos contenidos de base.html.twig#}
{{ parent() }}
{% block content %}
{# Variables de página #}
{% set estaRuta = app.request.get('_route') %}
{% set parametrosDeRuta = app.request.get('_route_params') %}
{# Final de variables de página #}
{% include 'admin/admin_header.html.twig' %}
{% include 'admin/admin_navbar.html.twig' %}
{# El siguiente contenedor es la zona principal de trabajo. Su contenido varía de una página a otra, #}
{# pero la estructura se mantiene. Tiene el id 'TMPT_mainContentArea', tanto para su estilización por CSS como #}
{# para su gestión por jQuery. #}
<div id='TMPT_mainContentArea' class='TMPT_fullVPWidth'>
<div class='container-fluid'>
{% block page_content %}{% endblock page_content %}
</div>
</div>
{% endblock content %}
{% block javascripts %}
{#Por si cargamos contenidos de base.html.twig#}
{{ parent() }}
<script language='javascript' src='{{ asset('bundles/app/js/admin/TMPT_template_base.js') }}'></script>
{% endblock javascripts %}
{% endblock body %}
Como veis, hay un bloque llamado page_content, anidado dentro de otro bloque, llamado content.
La vista que extiende de este layout es muy simple:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% extends 'admin_layout.html.twig' %}
{% block title %}Página principal de admin{% endblock %}
{% block body %}
{% block content %}
{{ parent() }}
{% block page_content %}
{# Aquí van los contenidos de la zona principal de la página #}
<h1>{{"Main Page"|trans()}}</h1>
{# Aquí acaban los contenidos de la zona principal de la página #}
{% endblock page_content %}
{% endblock content %}
{% block scripts %}
{% endblock scripts %}
{% endblock body %}
Todo parece ir bien al cargar la página, pero el problema es que el código HTML está repetido. Si muestro el código en el navegador, veo algo como esto:
1
2
3
4
5
6
7
8
9
...
<div id='TMPT_mainContentArea' class='TMPT_fullVPWidth'>
<div class='container-fluid'>
<h1>Main Page</h1>
</div>
</div>
<h1>Main Page</h1>
....
Es decir, el HTML <h1>Main Page</h1 aparece dos veces. Una en su sitio y otra fuera del div TMPT_mainContentArea. Ya me he asegurado de que en la vista sólo está en un sitio, y no está en ninguna otra parte del código, ni en el layout, ni en el controlador, ni en ningún sitio más.
Podeis darme alguna pista?
Valora esta pregunta
0