Symfony PHP模板自定义错误页面

时间:2016-09-27 17:26:14

标签: php symfony

我正在使用带有php模板的symfony 2.8版本。我可以使用php模板创建自定义错误页面吗?

1 个答案:

答案 0 :(得分:0)

当然。

services.yml中,在例外情况下添加一个侦听器:

listener.exception:
    class: Symfony\Component\HttpKernel\EventListener\ExceptionListener
    arguments: ["MyWebsite\\Controller\\ExceptionController::exceptionAction"]
    tags:
        - {name: 'kernel.event_subscriber'}

然后你的控制器是一个普通的控制器:

<?php

namespace MyWebsite\Controller;

use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\HttpFoundation\Response;

class ExceptionController extends AbstractController
{
    public function exceptionAction(FlattenException $exception)
    {
        $text = $exception->getMessage() ;
        if (isset(Response::$statusTexts[$exception->getStatusCode()])) {
            $text = Response::$statusTexts[$exception->getStatusCode()];
        }
        $response = new Response(null);
        $response->setStatusCode($exception->getStatusCode());
        return $this->render(
            'exception.html.twig',    // Here your template
            ['error' =>$text],
            $response
        );
    }
}