在尝试使用Silex微框架显示自定义 404 错误页面时,我有点挣扎。
我的项目配置如下:
- 让index.php页面在生产模式下运行,加载
prod.php
配置文件 - 让index_dev.php在调试模式下运行。它也使用
prod.php
配置文件,但某些设置会被dev.php
文件覆盖,例如$app['debug']
设置为true。
所以基本上配置是一样的。
我已经定义了一个错误处理程序,如下所示:
$app->error(function (\Exception $e, $code) use ($app) {
// commented for testing purposes
/*if ($app['debug']) {
return;
}*/
if ($code == 404) {
$loader = $app['dataloader'];
$data = array(
'global' => $loader->load('global'),
'common' => $loader->load('common', $app['locale']),
'header' => $loader->load('header', $app['locale']),
'footer' => $loader->load('footer', $app['locale'])
);
return new Response( $app['twig']->render('404.html.twig', array( 'data' => $data )), 404);
}
return new Response('We are sorry, but something went terribly wrong.', $code);
});
尝试访问http://localhost:8888/index_dev.php/my-non-existing-page
时,我的 404 模板按预期呈现和显示。
尝试访问http://localhost:8888/my-non-existing-page
时,我的 404 模板未呈现,而是得到一个标准的 404 错误页面!
可能很难帮助我。如果需要,请随时询问更多详细信息。我只是愿意更好地了解这里实际发生的事情。