Symfony抛出ResourceNotFoundException并覆盖错误模板

时间:2016-02-26 08:26:32

标签: php symfony symfony-routing

我有一个小问题。我已经覆盖了app/Resources/TwigBundle/views/Exception/中的模板,并且分别有错误,错误404和error500.html.twig。 我删除了缓存,在进入未定义的页面后,我得到了:

  

致命错误:未捕获的异常' Symfony \ Component \ Routing \ Exception \ ResourceNotFoundException'在E:\ svn \ medapp \ app \ cache \ prod \ appProdUrlMatcher.php:4044堆栈跟踪:#0 E:\ svn \ medapp \ app \ cache \ prod \ classes.php(1433):appProdUrlMatcher-> match( ' / asdasd')#1 E:\ svn \ medapp \ app \ cache \ prod \ classes.php(19616):Symfony \ Component \ Routing \ Matcher \ UrlMatcher-> matchRequest(Object(Symfony \) Component \ HttpFoundation \ Request))#2 E:\ svn \ medapp \ app \ cache \ prod \ classes.php(2583):JMS \ I18nRoutingBundle \ Router \ I18nRouter-> matchRequest(Object(Symfony \ Component \ HttpFoundation \ Request) ))#3 [内部函数]:Symfony \ Component \ HttpKernel \ EventListener \ RouterListener-> onKernelRequest(Object(Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent),' kernel.request',Object(Symfony \ Component \ EventDispatcher \ ContainerAwareEventDispatcher))#4 E:\ svn \ medapp \ app \ cache \ prod \ classes.php(2352):call_user_func(Array,Object(Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent),&#39 ; kernel.request',对象(E:\ svn \ medapp \ app \ c中的Symfony \ Component \ EventDispatcher \ ContainerAwareEventDis第5334行的ache \ prod \ classes.php   503服务不可用

prod.log:

  

[2016-02-26 09:40:49] request.ERROR:未捕获PHP异常   Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:" No   发现" GET / asdasdas""在   E:\ SVN \ medapp \供应商\ symfony的\ symfony中的\ src \的Symfony \分量\ HttpKernel \事件监听\ RouterListener.php   第176行{"例外":" [对象]   (Symfony的\元器件\ HttpKernel \异常\ NotFoundHttpException(代码:   0):找不到\" GET / asdasdas \"在   E:\ SVN \ medapp \供应商\ symfony的\ symfony中的\ src \的Symfony \分量\ HttpKernel \事件监听\ RouterListener.php:176,   Symfony的\分量\路由\异常\ ResourceNotFoundException(代码:   0):at   E:\ svn \ medapp \ app \ cache \ prod \ appProdUrlMatcher.php:4044)"} []   [2016-02-26 09:40:49] request.CRITICAL:处理时抛出异常   异常(Twig_Error_Runtime:在抛出异常时抛出异常)   模板的渲染("令牌存储包含否   认证令牌。一个可能的原因可能是没有   为此URL配置的防火墙。")in   " MedAppBundle:默认:base.html.twig"在第95行   E:\ svn \ medapp \ vendor \ twig \ twig \ lib \ Twig \ Template.php第182行)   {"例外":" [对象](Twig_Error_Runtime(代码:0):异常有   在渲染模板期间抛出(\"令牌存储   不包含身份验证令牌。一个可能的原因可能是   没有为此URL配置防火墙。\")in   \" MedAppBundle:默认:base.html.twig \"在第95行   E:\ SVN \ medapp \供应商\树枝\树枝\ LIB \嫩枝\的template.php:182,   Symfony的\分量\安全\核心\异常\ AuthenticationCredentialsNotFoundException(代码:   0):令牌存储不包含身份验证令牌。一种可能   原因可能是没有为此URL配置防火墙。在   E:\ SVN \ medapp \厂商\ symfony的\ symfony的\ SRC \的Symfony \元器件\安全\核心\授权\ AuthorizationChecker.php:57)"}   [] [2016-02-26 09:40:49] request.CRITICAL:未捕获PHP异常   Twig_Error_Runtime:"渲染期间抛出了异常   模板("令牌存储不包含身份验证令牌。   一个可能的原因可能是没有配置防火墙   这个网址。")" MedAppBundle:默认:base.html.twig"在第95行。"在   E:\ svn \ medapp \ vendor \ twig \ twig \ lib \ Twig \ Template.php第182行   {"例外":" [对象](Twig_Error_Runtime(代码:0):异常有   在渲染模板期间抛出(\"令牌存储   不包含身份验证令牌。一个可能的原因可能是   没有为此URL配置防火墙。\")in   \" MedAppBundle:默认:base.html.twig \"在第95行   E:\ SVN \ medapp \供应商\树枝\树枝\ LIB \嫩枝\的template.php:182,   Symfony的\分量\安全\核心\异常\ AuthenticationCredentialsNotFoundException(代码:   0):令牌存储不包含身份验证令牌。一种可能   原因可能是没有为此URL配置防火墙。在   E:\ SVN \ medapp \供应商\ symfony的\ symfony中的\ src \的Symfony \分量\安全\核心\授权\ AuthorizationChecker.php:57,   的Symfony \组件\ HttpKernel \异常\ NotFoundHttpException(代码:   0):找不到\" GET / asdasdas \"在   E:\ SVN \ medapp \供应商\ symfony的\ symfony中的\ src \的Symfony \分量\ HttpKernel \事件监听\ RouterListener.php:176,   Symfony的\分量\路由\异常\ ResourceNotFoundException(代码:   0):at   E:\ svn \ medapp \ app \ cache \ prod \ appProdUrlMatcher.php:4044)"} []   [2016-02-26 09:40:49] request.CRITICAL:处理时抛出异常   异常(Twig_Error_Runtime:在抛出异常时抛出异常)   模板的渲染("令牌存储包含否   认证令牌。一个可能的原因可能是没有   为此URL配置的防火墙。")in   " MedAppBundle:默认:base.html.twig"在第95行   E:\ svn \ medapp \ vendor \ twig \ twig \ lib \ Twig \ Template.php第182行)   {"例外":" [对象](Twig_Error_Runtime(代码:0):异常有   在渲染模板期间抛出(\"令牌存储   不包含身份验证令牌。一个可能的原因可能是   没有为此URL配置防火墙。\")in   \" MedAppBundle:默认:base.html.twig \"在第95行   E:\ SVN \ medapp \供应商\树枝\树枝\ LIB \嫩枝\的template.php:182,   Symfony的\分量\安全\核心\异常\ AuthenticationCredentialsNotFoundException(代码:   0):令牌存储不包含身份验证令牌。一种可能   原因可能是没有为此URL配置防火墙。在   E:\ SVN \ medapp \厂商\ symfony的\ symfony的\ SRC \的Symfony \元器件\安全\核心\授权\ AuthorizationChecker.php:57)"}   []

如果我删除或重命名TwigBundle模板然后删除缓存,我会收到标准的Symfony错误页面:

  

糟糕!发生错误

     

服务器返回" 404 Not Found"。

     

有些东西坏了。发生此错误时,请告诉我们您在做什么。我们会尽快修复它。很抱歉给您带来不便。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我发现了错误,抱歉打扰了。

问题是错误模板为他们正在扩展的模板调用parent()

{% extends 'MedAppBundle:Default:base.html.twig' %}
{% block body %}
    {{ parent() }}
    <div class="container-fluid" >
        <div class="row" >
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 error-content" >
                <h1 class="error-title">404</h1>

                <h2 class="error-header2">Resource Not Found
                </h2>

                <p>The resource requested could not be found on this server!</p>

            </div>
        </div>
    </div>
{% endblock body %}

在父模板中,我要求提供令牌存储。

为未来学习的东西。