Symfony PHP自定义异常控制器不起作用

时间:2018-09-28 15:13:50

标签: php symfony controller routing symfony4

我正在尝试在php Symfony 4中创建一个自定义异常控制器。本质上,我想做的是拥有一个默认路由,该路由在没有其他路由匹配时被调用。

我正在尝试遵循以下建议: https://symfony.com/doc/current/controller/error_pages.html#custom-exception-controller

我已经在configs >> pacakges中创建了twig.yaml文件:

twig:
    exception_controller: App\Controller\ExceptionController::showException

我还创建了ExceptionController类:

<?php
namespace  App\Controller;


use Symfony\Component\HttpFoundation\Response;

class ExceptionController
{

    public function showException()
    {
        $response = new Response();
        $response->setContent("Some random text");
        $response->headers->set('Content-Type', 'text/plain');
        $response->headers->set('Access-Control-Allow-Origin', '*');
        $response->setStatusCode(200);
        return $response;
    }
}

当我访问一个不存在的URL时,我希望看到文本“ Some random text”,但是却得到了默认的“未找到交响曲”页面:

enter image description here

有什么主意我可能做错了吗?

2 个答案:

答案 0 :(得分:1)

您提到在twig.yaml下创建了configs/packages

两件事:

  1. 这应该是config,而不是configs
  2. twig.yaml应该已经存在,无需创建此文件。

我怀疑如果创建了此文件,那么您在错误的位置创建了一个文件,而Symfony没有选择您的配置更改。而是将配置更改添加到twig.yaml下的现有config/packages文件中。

将自定义exception_controller路径添加到此现有(假定默认值)twig.yaml后,它应如下所示:

twig:
    default_path: '%kernel.project_dir%/templates'
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
    exception_controller: App\Controller\ExceptionController::showException

我通过全新安装对其进行了测试,它可以按预期运行。

希望这会有所帮助:)


您的方法应名为showException,而不是您在endpoint配置中定义的twig.exception_controller

答案 1 :(得分:0)

您是否尝试将路由用于路由? Rooting