我已经研究了很多方法来做到这一点,但找不到解决方案。
我希望我的网站在发生异常时显示特定的路线/页面。
因此,如果我将其设置为显示路由“联系人”并转到 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