我正在使用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()
有一个参数用于后备页面或除了一个页面数组,但显然不是。
答案 0 :(得分:3)
答案只是在渲染页面时使用try / catch块。我切换到Slim进行路由,但它与Macaw没有任何区别。所以现在我有这样的事情:
try {
$app->render("pages/$slug.html", $data);
} catch (Exception $e) {
$app->render('pages/404.html', array('error'=> $e));
}