Symfony2异常事件侦听器运行一些控制器操作
我需要做两件事中的一件(按优先顺序,但只需要其中一件) 所有这些都是在作为异常事件侦听器()运行的函数中完成的 在普通的控制器中,下面两种方法都非常简单,但在事件侦听器函数中,我看不到这一点 (1) 以正常方式运行控制器,并以正常方式输出,就像已执行该路由一样:Symfony2异常事件侦听器运行一些控制器操作,symfony,Symfony,我需要做两件事中的一件(按优先顺序,但只需要其中一件) 所有这些都是在作为异常事件侦听器()运行的函数中完成的 在普通的控制器中,下面两种方法都非常简单,但在事件侦听器函数中,我看不到这一点 (1) 以正常方式运行控制器,并以正常方式输出,就像已执行该路由一样: e.g. $event->runController('controllerName'); (2) 使用与普通控制器中相同的语法将模板渲染为普通: return $this->render('Bundle:Default:
e.g. $event->runController('controllerName');
(2) 使用与普通控制器中相同的语法将模板渲染为普通:
return $this->render('Bundle:Default:feedback.html.twig', array([template vars]));
在
symfony\Component\HttpKernel\EventListener\ExceptionListener
中查看symfony的默认异常侦听器
(1) 运行控制器可以通过以下方式实现:
(2) 在异常侦听器中呈现模板
您只需将模板(引擎)传递给service.yml中的侦听器
services:
foobar.exception_listener_service:
class: %foobar.exception_listener_service.class%
arguments:
container: "@service_container"
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: 255 }
在侦听器中,您可以按如下所示呈现模板
$templating = $this->container->get('templating');
$response = new Response($templating->render('foobar:Exception:error404.html.twig', array('exception' => $exception)));
$event->setResponse($response);
在
symfony\Component\HttpKernel\EventListener\ExceptionListener
中查看symfony的默认异常侦听器
(1) 运行控制器可以通过以下方式实现:
(2) 在异常侦听器中呈现模板
您只需将模板(引擎)传递给service.yml中的侦听器
services:
foobar.exception_listener_service:
class: %foobar.exception_listener_service.class%
arguments:
container: "@service_container"
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: 255 }
在侦听器中,您可以按如下所示呈现模板
$templating = $this->container->get('templating');
$response = new Response($templating->render('foobar:Exception:error404.html.twig', array('exception' => $exception)));
$event->setResponse($response);