Silex和Twig帮助自定义错误页面

Pio*_*otr 43 url helpers fatal-error twig silex

在尝试渲染自定义错误页面时,我正在努力解决问题Silex.

根据我在此链接中找到的内容: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 %}
Run Code Online (Sandbox Code Playgroud)

我的Silex应用程序中的错误处理PHP代码:

$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);
});
Run Code Online (Sandbox Code Playgroud)

一旦我删除

{{ 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
Run Code Online (Sandbox Code Playgroud)

所以我需要一些指导,说明导致此问题背后可能的原因以及解决此问题的步骤.所有帮助赞赏.

tch*_*hap 1

这不是 Silex 问题(截至目前) - 在我这边一切都运行良好(Silex 1.2)

您在应用程序中注册了吗UrlGeneratorServiceProvider

web/index.php

$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
Run Code Online (Sandbox Code Playgroud)

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

{{ path('home') }}
Run Code Online (Sandbox Code Playgroud)