我正在尝试在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”,但是却得到了默认的“未找到交响曲”页面:
有什么主意我可能做错了吗?
答案 0 :(得分:1)
您提到在twig.yaml
下创建了configs/packages
。
两件事:
config
,而不是configs
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