gpt4 book ai didi

symfony - 显示特定路线而不是错误页面(404) - Symfony2

转载 作者:行者123 更新时间:2023-12-04 01:49:27 25 4
gpt4 key购买 nike

我只想显示/sitemap 页面,而不是错误页面/404。当然,我不想要重定向,我仍然希望设置 404 HTTP 响应 header 。

这可能吗?我只能看到如何在 Twig 中设置模板。

我绝对不想要重定向。

最佳答案

如图the Symfony Cookbook您可以通过两种方式覆盖错误页面:

  • 覆盖模板
  • 使用自定义异常 Controller

  • 如果您只想显示 /sitemap在 404 ( HttpNotFoundException ) 异常上路由,您可以通过在 app/Resources/TwigBundle/views/Exception/error404.html.twig 中创建新模板来覆盖 Twig 异常模板.

    食谱中未显示的另一种方法是使用事件监听器。当内核遇到异常时, kernel.exception 事件被调度。默认情况下,这个异常会被 Twig 提供的异常监听捕获。您可以 create your own event listener监听 kernel.exception事件并呈现页面:
    <?php
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
    use Symfony\Component\HttpFoundation\Response;

    public function onKernelException(GetResponseForExceptionEvent $event)
    {
    if ($event->getException() instanceof NotFoundHttpException) {
    $response = $this->templating->renderResponse(/* sitemap */);

    $event->setResponse($response)
    }
    }

    (我还没有测试过这段代码,所以你应该自己尝试一下!当然,你必须自己将模板服务注入(inject)到事件监听器中)。

    关于symfony - 显示特定路线而不是错误页面(404) - Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15983082/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com