Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Duda con los anchor links y twig

25 de noviembre de 2014

Hola:

Seguimos a vueltas con Symfony xD.

Hoy mi duda viene por lo siguiente, estoy intentado hacer un menu con varios archor links que irían a unas nav tabs.

En el menú están así:

<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion1">Sección 1</a>
<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion1">Sección 2</a>
<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion1">Sección 3</a>

Y estas son las nav:

<ul class="nav nav-tabs">
   <li><a href="#seccion1" data-toggle="tab">Seccion1</a></li>
   <li><a href="#seccion2" data-toggle="tab">Seccion2</a></li>
   <li><a href="#seccion3" data-toggle="tab">Seccion3</a></li>
</ul>
 
<div id="Seccion1" class="tab-pane"></div>
<div id="Seccion1" class="tab-pane"></div>
<div id="Seccion1" class="tab-pane"></div>

El menú y las nav están en archivos diferentes. Y no me funciona, seguro que la solución es evidete, pero no la veo.

Saludos


Respuestas

#1

Aunque no lo dices, creo que estás usando Bootstrap para diseñar la página. En ese caso, creo que el error que se te está produciendo no tiene que ver directamente con Twig.

Lo primero que comprobaría es si el archivo JavaScript de Bootstrap está bien cargado, ya que si no, no te van a funcionar las pestañas de contenidos. Lo segundo sería quitar las URL completas de los enlaces del menú; es decir, quitar todo lo del {{ path(...) }} relacionado con Twig.

Si quieres ver un ejemplo real de aplicación que usa Twig y Bootstrap para crear este tipo de menú, puedes visitar dx.symfony.com y puedes ver su código fuente en github.com/sensiolabs/dx.symfony.com. El código completo de la plantilla lo puedes ver aquí.

@javiereguiluz

26 noviembre 2014, 8:59
#2

Si estoy usando bootstrap, las pestañas funcionan, prove a crear los anchor asi, pero no funciona voy a echarle un vistazo, gracias por la ayuda

@TsubasaAkai

26 noviembre 2014, 12:20
#3

El único error que veo en tu código HTML es que en el menú estás usando el mismo valor para el atributo id de las tres pestañas (seccion1). Deberías utilizar valores diferentes:

<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion1">Sección 1</a>
<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion2">Sección 2</a>
<a href="{{ path('editBackend',{'entidad':'empresa','objeto': 1}) }}#seccion3">Sección 3</a>

Por otra parte, hay un par de detalles que podrías mejorar en el código HTML de tu página. Primero, los .tab-pane se suelen encerrar dentro de un elemento .tab-content:

<div class="tab-content">
    <div id="Seccion1" class="tab-pane"></div>
    <div id="Seccion1" class="tab-pane"></div>
    <div id="Seccion1" class="tab-pane"></div>
</div>

Segundo, suele ser recomendado indicar cuál es la pestaña activa cuando no se selecciona ninguna. Para eso puedes usar la clase .active:

<ul class="nav nav-tabs">
   <li><a href="#seccion1" data-toggle="tab" class="active">Seccion1</a></li>
   <li><a href="#seccion2" data-toggle="tab">Seccion2</a></li>
   <li><a href="#seccion3" data-toggle="tab">Seccion3</a></li>
</ul>
 
<div class="tab-content">
    <div id="Seccion1" class="tab-pane active"></div>
    <div id="Seccion1" class="tab-pane"></div>
    <div id="Seccion1" class="tab-pane"></div>
</div>

@javiereguiluz

8 diciembre 2014, 10:31