Silex&Twig助手在自定义错误页面中

在尝试在Silex呈现自定义错误页面时,我正在努力解决问题。

根据我在这个链接中find的: http : //refactoring.us/silex/custom-error-pages-with-silex-and-twig/

我试图在我的应用程序中设置一个自定义的404错误页面。 一切工作正常,直到我开始在我的树枝模板中使用助手。

404错误页面模板的示例代码如下所示:

 {% 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 %} 

我的Silex应用程序中的error handlingPHP代码:

 $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); }); 

一旦我删除

  {{url('home')}} 

(这个帮手和路线在其他情况下完美的工作!)我得到适当的渲染网站,但没有翻译。

随着帮手,我得到以下错误:

 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 

所以我需要一些指导,这可能是导致这个问题的原因和解决这个问题的步骤。 所有帮助赞赏。

这不是一个Silex问题(截至目前) – 一切工作完全在我身边( Silex 1.2)

您是否在应用中注册了UrlGeneratorServiceProvider

web/index.php

 $app->register(new Silex\Provider\UrlGeneratorServiceProvider()); 

在这种情况下,你应该使用path()而不是url()

 {{ path('home') }}