url - Silex & Twig helpers en páginas de error personalizadas
fatal-error (1)
Estoy luchando con un problema al intentar renderizar una página de error personalizada en Silex
.
De acuerdo con lo que encontré en este enlace: http://refactoring.us/silex/custom-error-pages-with-silex-and-twig/
Estoy tratando de configurar una página de error 404 personalizada en mi aplicación. Todo funciona bien hasta que empiece a usar ayudantes en mi plantilla de ramas.
Un código ejemplar para la plantilla de página de error 404 es el siguiente:
{% extends "layout.html.twig" %}
{% block main %}
<div id="error404">
<h2>{{ app.translator.trans(''page404.title'') }}</h2>
<p>{{ app.translator.trans(''page404.para1'') }}</p>
<p class="btn-footer">
<a href="{{ url(''home'') }}" class="btn">{{ app.translator.trans(''page404.button'') }}</a>
</p>
</div>
{% endblock %}
Código PHP para el manejo de errores en mi aplicación Silex:
$app->error(function (/Exception $e, $code) use($app) {
switch ($code) {
case 404:
$message = $app[''twig'']->render(''error404.html.twig'');
break;
default:
$message = $app[''twig'']->render(''error500.html.twig'');
}
return new Response($message, $code);
});
Una vez que elimino
{{ url(''home'') }} (¡Este asistente y la ruta funcionan perfectamente en otros casos!) Obtengo el sitio procesado correcto, pero sin las traducciones.
Con el ayudante, aparece el siguiente error:
Fatal error: Uncaught exception ''Symfony/Component/Routing/Exception/RouteNotFoundException'' with message ''Route "" does not exist.'' in D:/projects/projectname/application/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php:119 Stack trace:
#0 D:/projects/projectname/application/vendor/symfony/twig-bridge/Symfony/Bridge/Twig/Extension/RoutingExtension.php(45): Symfony/Component/Routing/Generator/UrlGenerator->generate(NULL, Array, false)
#1 D:/projects/projectname/application/vendor/twig/twig/lib/Twig/Environment.php(327) : eval()''d code(68): Symfony/Bridge/Twig/Extension/RoutingExtension->getPath(NULL, Array)
#2 D:/projects/projectname/application/vendor/twig/twig/lib/Twig/Template.php(265): __TwigTemplate_ca53e56b87abd45da5c34a79d4c2ce34->doDisplay(Array, Array)
#3 D:/projects/projectname/application/vendor/twig/twig/lib/Twig/Template.php(239): Twig_Template->displayWithErrorHandling(Array, Array)
#4 D:/projects/projectname/application/vendor/twig/twig/lib/Twig/Envir in D:/projects/projectname/application/vendor/twig/twig/lib/Twig/Template.php on line 280
Así que necesito una guía aquí sobre cuál podría ser la posible razón detrás de esto que está causando esto y los pasos para resolver este problema. Toda ayuda apreciada.
Este no es un problema de Silex (a partir de ahora) - Todo funciona perfectamente de mi lado ( Silex 1.2)
¿Has registrado el UrlGeneratorServiceProvider
en tu aplicación?
en web/index.php
:
$app->register(new Silex/Provider/UrlGeneratorServiceProvider());
Y realmente debería usar path()
lugar de url()
en este caso:
{{ path(''home'') }}