php - Symfony php自定义异常控制器不起作用
问题描述
我正在尝试在 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 时,我希望看到文本“一些随机文本”,但我得到了默认的 symfony not found 页面:
有什么想法我可能做错了吗?
解决方案
您提到您创建了一个twig.yaml
under 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
配置中定义的方法。
推荐阅读
- azure - 为什么挂载存储会清空其他文件夹
- python - 无法获取熊猫数据框中特定变量的假人
- python - 在python中评估自身内部的对象
- vba - 如何限制具有多个类别的项目?
- android - 在 linux 上使用 qtcreator 设置 android 开发
- django - 我的表单没有出现在模板中 {{ form }} 没有做任何事情
- ionic-framework - Ionic 4 随机页面加载
- c# - 如何显示包含图像的对象列表并将其绑定到源 MVVM
- twitter-bootstrap - Bootstrap 可折叠默认不隐藏
- java - AspectJ:如何将数据从处理程序返回到方法?