【问题标题】:Symfony2 - use a route as an exception pageSymfony2 - 使用路由作为异常页面
【发布时间】:2013-04-14 16:19:57
【问题描述】:

我已经研究了很多方法来做到这一点,但找不到解决方案。

我希望我的网站在发生异常时显示特定的路线/页面。

因此,如果我将其设置为显示路线“联系人”并且我转到 domain.com/dfergerxyttt(未找到路线),那么它将与我转到 domain.com/route 相同(除了404 状态码)。

我需要这些关键的东西: (1) 我需要它像往常一样运行控制器代码 (2) 我还需要它来运行我的请求事件侦听器代码

我不能只将它设置为显示一个特定的模板,它必须是整个 request-event-listener 和 controller 等过程。

我尝试了一个异常监听器,但它也不会运行请求监听器。所有这些代码都被忽略了。

我看不到一种方法来设置一条包罗万象的路线或任何东西。设置默认路由或包罗万象的路由是个好主意。

--

我已经尝试过了,但我无法访问控制器。不确定我是否需要注入它或其他东西:

namespace etc...

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernel;
use Symfony\Component\HttpKernel\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpFoundation\Response;

class MyExceptionController extends ExceptionController
{
    public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
    {

       $httpKernel = $this->container->get('kernel');
       $response = $httpKernel->forward('AcmeMyBundle:Default:pageAction');
       $this->setResponse(new Response($response));

    }
}

我也在 services.yml 中做了这件事,这似乎是正确的:

parameters:
    twig.controller.exception
      class: Acme\MyBundle\MyExceptionController

【问题讨论】:

    标签: symfony


    【解决方案1】:

    创建异常控制器并使用Controller::forward 转发到特定路由。

    有关如何在 2.2 中创建异常控制器,请参阅此答案:https://stackoverflow.com/a/15773923/1149495

    【讨论】:

    • 我已经完成了所有这些,但我无法访问控制器。只是 Controller::forward(--) 不起作用,$this->controller(--) 也不起作用。我只需要访问控制器。
    • 请告诉我们你做了什么。好像有什么不懂
    • 我已经用我尝试过的方法更新了这个问题。我认为它只是访问我需要的控制器类/对象。
    • 感谢您的帮助。我注意到你有 Symfony2 徽章,非常清楚你在说什么,但我绝对不能像普通控制器那样使用 $this->forward。
    • @user2143356 你使用的是 Symfony2.2+ 还是低于 2.2 的版本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2020-08-05
    • 2020-11-08
    • 2015-03-29
    相关资源
    最近更新 更多