当找不到模板时,使Twig回退到404页面

时间:2015-06-03 02:44:06

标签: php twig

我正在使用Twig作为我网站的独立模板引擎。我正在使用一个名为Macaw的简单路由器,它采用“漂亮的URL”并告诉Twig如此呈现适当的页面:

Macaw::get('/(:any)', function($slug) {
    echo $GLOBALS['twig']->render('@pages/'.$slug.'.html');
});

这一切都很好,除非我尝试加载一个不存在的页面,我得到一个可怕的错误,如

  

致命错误:未捕获的异常'Twig_Error_Loader',消息'无法找到模板'@ pages / this-link-is-bad-and-you-should-feel-bad.html“< / p>

我认为这是一件非常简单的事情,但我无法在逻辑上弄清楚,我在Twig文档中找不到任何关于如何处理这个问题的内容。我希望twig->render()有一个参数用于后备页面或除了一个页面数组,但显然不是。

1 个答案:

答案 0 :(得分:3)

答案只是在渲染页面时使用try / catch块。我切换到Slim进行路由,但它与Macaw没有任何区别。所以现在我有这样的事情:

try {
    $app->render("pages/$slug.html", $data);
} catch (Exception $e) {
    $app->render('pages/404.html', array('error'=> $e));
}