在Symfony 2错误自定义中应该覆盖哪些模板?

时间:2012-07-24 22:45:27

标签: symfony twig

来自documentation

  

所有错误模板都存在于TwigBundle中。要覆盖   模板,我们只需依靠标准方法来覆盖   生活在捆绑包中的模板。

  

要查看默认错误模板的完整列表,请参阅   资源/视图/ TwigBundle的Exception目录。

查看后面提到的目录i can find several files。我对403,404和500错误的自定义模板感兴趣,所以我创建了error.html.twig(父模板)和error403.html.twigerror404.html.twigerror500.html.twig,它们来自{{{ 1}}(由我的自定义父模板覆盖)。

这是对的吗?如果抛出另一种错误或异常会发生什么?

1 个答案:

答案 0 :(得分:8)

是的,这是正确的。

内核将捕获所有其他类型的异常,并且将呈现error500.html.twig页面。

要测试它,您可以暂时关闭调试,方法是在app_dev.php中切换传递给AppKerner构造函数的第二个参数

  

$ kernel = new AppKernel('dev',false);

然后你可以

  1. 输入错误的地址以测试404错误页面
  2. 将任何异常抛出到测试500错误页面
  3.   

    抛出新\ Exception(); //测试500错误页面

    1. throw
    2.   抛出新的   \的Symfony \元器件\ HttpKernel \异常\ AccessDeniedHttpException();
        或
         扔新的   \的Symfony \元器件\ HttpKernel \异常\ HttpException(403);   //测试403错误页面