3 namespace Drupal\early_rendering_controller_test;
5 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6 use Symfony\Component\HttpFoundation\Response;
7 use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
8 use Symfony\Component\HttpKernel\KernelEvents;
11 * View subscriber for turning TestDomainObject objects into Response objects.
13 class TestDomainObjectViewSubscriber implements EventSubscriberInterface {
16 * Sets a response given a TestDomainObject instance.
18 * @param \Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent $event
19 * The event to process.
21 public function onViewTestDomainObject(GetResponseForControllerResultEvent $event) {
22 $result = $event->getControllerResult();
24 if ($result instanceof TestDomainObject) {
25 if ($result instanceof AttachmentsTestDomainObject) {
26 $event->setResponse(new AttachmentsTestResponse('AttachmentsTestDomainObject'));
28 elseif ($result instanceof CacheableTestDomainObject) {
29 $event->setResponse(new CacheableTestResponse('CacheableTestDomainObject'));
32 $event->setResponse(new Response('TestDomainObject'));
40 public static function getSubscribedEvents() {
41 $events[KernelEvents::VIEW][] = ['onViewTestDomainObject'];