Expertos en Symfony y Drupal

Personalizar la página de error 404 en Symfony2

Cuando un usuario accede a una dirección que no existe, el servidor le devuelve un mensaje de error 404. Si ese usuario navega por nuestra web e intenta acceder a una página que no existe, es importante que le mostremos el error de una forma amigable, mostrando un mensaje donde se explique claramente qué ha ocurrido e intentando evitar que salga huyendo de nuestro sitio, pudiedo ofrecer además otras posibilidades como un enlace a la portada de nuestra web o a otras secciones de la misma.

Cuando se produce un error 404 en una web desarrollada con Symfony, la excepción que se produce es capturada por la clase Kernel y remitida al controlador TwigBundle:Exception:show para ser procesada.

En este artículo vamos a explicar cómo personalizar esta página de error, definiendo la plantilla correspondiente. Para ello, creamos la plantilla error404.html.twig en la carpeta app/Resources/TwigBundle/views/Exception/ de nuestro proyecto con el siguiente código de ejemplo:


{% extends '::frontend.html.twig' %}

{% block title %}Página no encontrada{% endblock %}

{% block content %}    
     <h1>Lo sentimos, no encontramos la página que buscas</h1>
     <h2>Puede que la dirección esté mal escrita o que la página que buscas ya no esté disponible</h2>
{% endblock %}

Cuando se produce el error, Symfony busca una plantilla con el formato y código de estado dados (por ejemplo error404.json.twig), si no existe busca una plantilla solo con el formato dado (error.json.twig) y por último, si ésta tampoco existe, vuelve de nuevo a la plantilla HTML (error.html.twig).

De la misma forma que explicamos aquí cómo personalizar la página de error 404, se pueden personalizar otras páginas de error. La lista completa de plantillas de error por defecto las puedes encontrar dentro del directorio de TwigBundle (vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle), en la carpeta Resources/views/Exception.

[x] Este sitio utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando estás aceptando su uso. Política de cookies.