0

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

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

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

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

我不能只将它设置为显示一个特定的模板,它必须是整个请求事件侦听器和控制器等过程。

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

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

--

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

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
4

1 回答 1

0

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

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

于 2013-04-14T16:34:01.113 回答