【问题标题】:Symfony php Custom exception controller not workingSymfony php自定义异常控制器不起作用
【发布时间】:2019-03-04 14:58:13
【问题描述】:

我正在尝试在 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 未找到页面:

有什么想法我可能做错了吗?

【问题讨论】:

  • 我又看了一遍——我能够创建一个新的 Symfony 4 实例并覆盖异常控制器而没有任何问题。我在您的问题中注意到一件事:您说您创建了一个 twig.yaml - 这应该已经存在。另外,您说您在configs 下创建了它 - 这应该是config。你能澄清一下你的 twig.yaml 的路径吗?

标签: php symfony routes controller symfony4


【解决方案1】:

您是否尝试对路由使用路由? Rooting

【讨论】:

  • 我不确定您所说的路由路由是什么意思?如果您指的是将端点映射到 url,我的所有主要端点都已映射。
【解决方案2】:

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

两件事:

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

我的怀疑是,如果你创建了这个文件,你在错误的地方创建了一个文件,Symfony 没有接受你的配置更改。相反,将您的配置更改添加到config/packages 下的现有twig.yaml 文件中。

将自定义 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,而不是你在twig.exception_controller配置中定义的endpoint

【讨论】:

  • 我实际上也尝试过,但没有成功。将使用“showException”更新原始帖子
  • 谢谢,这篇文章让我找到了答案。设置异常控制器的文档仅适用于使用 symfony/website-skeleton 而不是 symfony/skeleton 创建的 symfony 项目。后者仅用于设置 api 调用的最小项目。
  • 有趣。很高兴知道!很高兴你把它整理好了:)
猜你喜欢
  • 2019-08-17
  • 2020-07-09
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多