Comprueba si {{ path() }} es {{ path() }} actual en Symfony2

1 minuto de lectura

¿Cómo compruebo si la página actual es esta ruta?

{{ path('someNamePath') }}

Quiero establecer una clase css para el <a> elemento o posiblemente eliminarlo por completo, por ejemplo

{% if  isCurrentPath('someNamePath') %}
    <a href="https://stackoverflow.com/questions/8451740/{{ path("someNamePath') }}" class="YouAreHere">My Link</a>
{% else %}
    <a href="https://stackoverflow.com/questions/8451740/{{ path("someNamePath') }}">My Link</a>
{% endif %}

app.request.get('_route') es probablemente lo que estás buscando:

{% if app.request.get('_route') == 'current_route' %}
    <a href="https://stackoverflow.com/questions/8451740/{{ path("current_route') }}" class="YouAreHere">My Link</a>
{% else %}
    <a href="https://stackoverflow.com/questions/8451740/{{ path("some_other_route') }}">My Link</a>
{% endif %}

En caso de que quiera usar uri en su lugar, puede usar app.request.uri.

  • si uso {% render ‘AppBundle:Sidebar:render’ %} para renderizar la barra lateral, entonces app.request.get(‘_route’) devuelve el valor ‘_internal’ siempre. ¿Cómo puedo obtener una _ruta de la página actual?

    – Mijaíl

    15 de agosto de 2012 a las 9:09


  • No puede y es por diseño (por ahora) para subsolicitudes.

    – Ondrej Slinták

    16 de agosto de 2012 a las 5:54

La forma correcta es usar la variable “controller_name”. Esto se agrega en cada controlador generado por la CLI de Symfony. Usted puede, y probablemente debería, agregarlo allí usted mismo si no está presente.

Entonces puedes hacer una verificación como esta: {% if controller_name == "DashboardController" %}active{% endif %}

¿Ha sido útil esta solución?