我正在尝试创建自定义异常错误页面,我一直关注Mike's tutorial。我已将以下代码插入config.yml,并在StoreBundle\Controller\ExceptionController.php
中创建了一个ExceptionController。当我尝试通过local.store.com/fake-page
测试我的404错误页面时,出现NotFoundHttpException: No route found for "GET /fake-page"
错误。我认为我的ExceptionController假设在没有找到页面的情况下重定向所有用户,所以我在其中添加了var_dump('testing')
但它从未转储过。我试图删除我注入config.yml
的代码,我得到了默认的Symfony错误页面。我在config.yml
做错了吗?
已插入app/config/config.yml
:
twig:
exception_controller: StoreBundle\Controller\ExceptionController::showAction
修改
我现在认为我的问题出在我的控制器中。这就是我在StoreBundle\ControlleExceptionController.php
中所拥有的。我的错误页面位于StoreBundle\Resources\views\Pages\Errors\404.html.twig
和StoreBundle\Resources\views\Pages\Errors\500.html.twig
<?php
namespace StoreBundle\Controller;
use Symfony\Component\HttpKernel\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController;
class ExceptionController extends BaseExceptionController
{
public function showAction(FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
{
$template = $this->container->get('kernel')->isDebug() ? 'exception' : 'error';
$code = $exception->getStatusCode();
return $this->container->get('templating')->renderResponse(
'StoreBundle:Exception:Pages/Errors:' . $code . '.html.twig', array(
'status_code' => $code,
'status_text' => Response::$statusTexts[$code],
'exception' => $exception,
'logger' => null,
'currentContent' => '',
));
}
}
}