当 symfony2 出现找不到页面错误时,我想将用户重定向到特定页面。
对于我创建的错误页面消息的自定义
app\Resources\TwigBundle\views\Exception\error404.html.twing
但现在我想将用户重定向到特定页面。我怎样才能做到这一点?
谢谢
当 symfony2 出现找不到页面错误时,我想将用户重定向到特定页面。
对于我创建的错误页面消息的自定义
app\Resources\TwigBundle\views\Exception\error404.html.twing
但现在我想将用户重定向到特定页面。我怎样才能做到这一点?
谢谢
您可能希望创建一个事件侦听器,用于侦听kernel.exception
内核在遇到异常时调度的事件。
然后,您将在侦听器内部检查异常是否是 的实例NotFoundHttpException
,如果是,则重定向到您选择的页面。
这是一个例子:
<?php
// src/Acme/DemoBundle/EventListener/AcmeExceptionListener.php
namespace Acme\DemoBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class AcmeExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
// You get the exception object from the received event
$exception = $event->getException();
if ($event->getException() instanceof NotFoundHttpException) {
$response = new RedirectResponse($url);
$event->setResponse($response);
}
}
}
显然,您需要注册事件侦听器。它只是一项服务,因此您只需照常注册即可。
# app/config/config.yml
services:
kernel.listener.your_listener_name:
class: Acme\DemoBundle\EventListener\AcmeExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
为此,您必须使用 .htaccess。请看这个。