You can call getResponse() to retrieve the current response. With setResponse() you can set a new response that will be returned to the browser.
Author: Bernhard Schussek (bschussek@gmail.com)
Inheritance: extends KernelEvent
 /**
  * Checking request and response and decide whether we need a redirect
  *
  * @param FilterResponseEvent $event
  */
 public function onResponse(FilterResponseEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     if ($request->get(self::HASH_NAVIGATION_HEADER) || $request->headers->get(self::HASH_NAVIGATION_HEADER)) {
         $location = '';
         $isFullRedirect = false;
         if ($response->isRedirect()) {
             $location = $response->headers->get('location');
             if ($request->attributes->get('_fullRedirect') || !is_object($this->security->getToken())) {
                 $isFullRedirect = true;
             }
         }
         if ($response->isNotFound() || $response->getStatusCode() == 503 && !$this->isDebug) {
             $location = $request->getUri();
             $isFullRedirect = true;
         }
         if ($location) {
             $response = $this->templating->renderResponse('OroNavigationBundle:HashNav:redirect.html.twig', array('full_redirect' => $isFullRedirect, 'location' => $location));
         }
         // disable cache for ajax navigation pages and change content type to json
         $response->headers->set('Content-Type', 'application/json');
         $response->headers->addCacheControlDirective('no-cache', true);
         $response->headers->addCacheControlDirective('max-age', 0);
         $response->headers->addCacheControlDirective('must-revalidate', true);
         $response->headers->addCacheControlDirective('no-store', true);
         $event->setResponse($response);
     }
 }
    public function onCoreResponse(FilterResponseEvent $event)
    {
        if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
            return;
        }

        $response = $event->getResponse();
        $request = $event->getRequest();

        // do not capture redirects or modify XML HTTP Requests
        if ($request->isXmlHttpRequest()) {
            return;
        }

        if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
            if (null !== $session = $request->getSession()) {
                // keep current flashes for one more request
                $session->setFlashes($session->getFlashes());
            }

            $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location'))));
            $response->setStatusCode(200);
            $response->headers->remove('Location');
        }

        if (!$response->headers->has('X-Debug-Token')
            || '3' === substr($response->getStatusCode(), 0, 1)
            || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html'))
            || 'html' !== $request->getRequestFormat()
        ) {
            return;
        }

        $this->injectToolbar($response);
    }
Example #3
0
 public function doResponse(FilterResponseEvent $event)
 {
     $response = $event->getResponse();
     $url = $event->getRequest()->getPathInfo();
     $prefix = ConfigQuery::read("back_office_path");
     $defaultEnabled = intval(ConfigQuery::read("back_office_path_default_enabled", "1"));
     $contentType = $response->headers->get('Content-Type');
     // skip if the default thelia prefixe is enabled
     if ($defaultEnabled === 1) {
         return;
     }
     $isValid = strpos($url, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) === 0 && $prefix !== null && $prefix !== "";
     if ($isValid) {
         if ($response instanceof RedirectResponse) {
             $targetUrl = $response->getTargetUrl();
             if (strpos($targetUrl, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) !== false) {
                 $newUrl = $this->replaceUrl($targetUrl, BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix);
                 $response->setTargetUrl($newUrl);
             }
         } else {
             $content = $this->replaceUrl($response->getContent(), BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix);
             $response->setContent($content);
         }
     }
 }
 public function saveBasket(Event\FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return false;
     }
     $order = $this->get('basket.order');
     $cookieName = $this->get('cfg')->basket->cookieName;
     $token = $this->get('request')->cookies->get($cookieName);
     // Skip if the order is empty
     if (count($order->items) < 1) {
         // If the cookie was in the request, delete it and clear the cookie
         if ($token) {
             $this->deleteBasket();
             $this->get('http.cookies')->add(new Cookie($cookieName, null, new \DateTime('-1 hour')));
         }
         return false;
     }
     // See if a basket already exists.
     $basket = $this->_services['order.basket.loader']->getByToken($token);
     // Update with current order details.
     if ($basket) {
         $basketID = $basket->basket_id;
         $this->_services['order.basket.edit']->update($basketID, $order);
     } else {
         // Create a new basket
         $basketID = $this->_services['order.basket.create']->create($order);
         $basket = $this->_services['order.basket.loader']->getByID($basketID);
     }
     // Create the cookie
     $token = $this->_services['order.basket.token']->generate($basketID, $basket->created_at);
     $cookieName = $this->_services['cfg']->basket->cookieName;
     $expire = new \DateTime('+' . $this->_services['cfg']->basket->cookieLength);
     $cookie = new Cookie($cookieName, $token, $expire);
     $this->_services['http.cookies']->add($cookie);
 }
 /**
  * Unwraps an enforced response.
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $response = $event->getResponse();
     if ($response instanceof EnforcedResponse && $event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) {
         $event->setResponse($response->getResponse());
     }
 }
 /**
  * Filters the Response.
  *
  * @param FilterResponseEvent $event A FilterResponseEvent instance
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     if ('HEAD' === $request->getMethod()) {
         // cf. RFC2616 14.13
         $length = $response->headers->get('Content-Length');
         $response->setContent('');
         if ($length) {
             $response->headers->set('Content-Length', $length);
         }
     }
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     if (null === $response->getCharset()) {
         $response->setCharset($this->charset);
     }
     if ($response->headers->has('Content-Type')) {
         return;
     }
     $format = $request->getRequestFormat();
     if (null !== $format && ($mimeType = $request->getMimeType($format))) {
         $response->headers->set('Content-Type', $mimeType);
     }
 }
Example #7
0
 /**
  * Logs master response on event KernelEvents::RESPONSE.
  *
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $this->logResponse($event->getResponse());
 }
Example #8
0
 public function processCount(FilterResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $connecte = new Connecte();
     $ip = $this->container->get('request')->getClientIp();
     $times = time();
     $doctrine = $this->container->get('doctrine.orm.entity_manager');
     $listIp = $this->doctrine->getRepository('SNSysNewsBundle:Connecte')->findAll();
     if (!in_array($ip, $listIp)) {
         $connecte->setIp($ip);
         $connecte->setTimes($times);
         $doctrine->persist($connecte);
         $doctrine->flush();
     } else {
         $times = time();
         $connecte->setTimes($times);
         $doctrine->persist($connecte);
         $doctrine->flush();
     }
     $time_5 = time() - 60 * 5;
     if ($times < $time_5) {
         $connecte = $this->doctrine->getRepository('SNSysNewsBundle:Connecte')->findOneByTimes($times);
         $doctrine->remove($connecte);
         $doctrine->flush();
     }
     $nbvisit = $doctrine->getRepository('SNSysNewsBundle:Connecte')->getcountnumbervisit();
     $rep = $this->counthtml->viewNbVisit($event->getResponse(), $nbvisit);
     $event->setResponse($rep);
 }
 /**
  * Renders the ajax commands right before preparing the result.
  *
  * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
  *   The response event, which contains the possible AjaxResponse object.
  */
 public function onResponse(FilterResponseEvent $event)
 {
     $response = $event->getResponse();
     if ($response instanceof AjaxResponse) {
         $response->prepareResponse($event->getRequest());
     }
 }
 /**
  * Adds the Contao headers to the Symfony response.
  *
  * @param FilterResponseEvent $event The event object
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!$this->contaoFramework->isInitialized()) {
         return;
     }
     $event->setResponse($this->mergeHttpHeaders($event->getResponse()));
 }
 public function onKernelResponse(FilterResponseEvent $e)
 {
     if (!$this->isRestRoute($e->getRequest())) {
         return;
     }
     $e->getDispatcher()->dispatch('sdispatcher.rest_response', $e);
 }
    public function onKernelResponse(FilterResponseEvent $event)
    {
        if ($this->url || !$event->isMasterRequest() || !\sfContext::hasInstance()) {
            return;
        }
        $response_headers = $event->getResponse()->headers;
        if ($response_headers->has('x-debug-token-link') && strpos(\sfContext::getInstance()->getResponse()->getContentType(), 'javascript') === false && !$event->getRequest()->isXmlHttpRequest()) {
            $this->url = $response_headers->get('x-debug-token-link');
            $link = json_encode($response_headers->get('x-debug-token-link'));
            echo <<<JAVASCRIPT
<script>
(function() {
  var bar_node = document.getElementById('sfWebDebugDetails'), link_node, li_node;
  if(bar_node) { // We have a debug bar
    link_node = document.createElement('a');
    link_node.href = {$link};
    link_node.appendChild(document.createTextNode('Symfony 2'));
    li_node = document.createElement('li');
    li_node.appendChild(link_node);
    bar_node.insertBefore(li_node,bar_node.firstChild);
  }
}())
</script>
JAVASCRIPT;
        }
    }
 /**
  * Process onReslonse event, updates user history information
  *
  * @param  FilterResponseEvent $event
  * @return bool|void
  */
 public function onResponse(FilterResponseEvent $event)
 {
     if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
         // Do not do anything
         return;
     }
     $request = $event->getRequest();
     $response = $event->getResponse();
     // do not process requests other than in html format
     // with 200 OK status using GET method and not _internal and _wdt
     if (!$this->matchRequest($response, $request)) {
         return false;
     }
     $postArray = ['url' => $request->getRequestUri(), 'user' => $this->user];
     /** @var $historyItem  NavigationHistoryItem */
     $historyItem = $this->em->getRepository('Oro\\Bundle\\NavigationBundle\\Entity\\NavigationHistoryItem')->findOneBy($postArray);
     if (!$historyItem) {
         /** @var $historyItem \Oro\Bundle\NavigationBundle\Entity\NavigationItemInterface */
         $historyItem = $this->navItemFactory->createItem(NavigationHistoryItem::NAVIGATION_HISTORY_ITEM_TYPE, $postArray);
     }
     $historyItem->setTitle($this->titleService->getSerialized());
     // force update
     $historyItem->doUpdate();
     $this->em->persist($historyItem);
     $this->em->flush($historyItem);
     return true;
 }
 /**
  * Trigger event for RESPONSE Kervenel vent
  *
  * @param FilterResponseEvent $event event
  */
 public function onResponse(FilterResponseEvent $event)
 {
     $response = $event->getResponse();
     $request = $event->getRequest();
     if (!$event->isMasterRequest()) {
         return;
     }
     if ($request->isXmlHttpRequest()) {
         return;
     }
     if ($response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) {
         return;
     }
     $http = $request->isSecure() ? 'https' : 'http';
     if (empty($this->extensions)) {
         return;
     }
     if (count($this->extensions) == 0) {
         return;
     }
     $extensions = implode('|', $this->extensions);
     $content = $response->getContent();
     $pattern = '/="[^"]*\\/(css|js|var|bundles)\\/(.*)\\.(' . $extensions . ')([^"]*)"/i';
     $replace = '="' . $http . '://' . $this->domain . '/${1}/${2}.${3}${4}"';
     $content = preg_replace($pattern, $replace, $content);
     $response->setContent($content);
 }
Example #15
0
 /**
  * Filters the Response.
  *
  * @param FilterResponseEvent $event A FilterResponseEvent instance
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType() || null === $this->esi) {
         return;
     }
     $this->esi->addSurrogateControl($event->getResponse());
 }
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $response = $event->getResponse();
     $request = $event->getRequest();
     if ($response->headers->has('X-Debug-Token') && null !== $this->urlGenerator) {
         try {
             $response->headers->set('X-Debug-Token-Link', $this->urlGenerator->generate('_profiler', array('token' => $response->headers->get('X-Debug-Token')), UrlGeneratorInterface::ABSOLUTE_URL));
         } catch (\Exception $e) {
             $response->headers->set('X-Debug-Error', get_class($e) . ': ' . $e->getMessage());
         }
     }
     if (!$event->isMasterRequest()) {
         return;
     }
     // do not capture redirects or modify XML HTTP Requests
     if ($request->isXmlHttpRequest()) {
         return;
     }
     if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
         $session = $request->getSession();
         if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) {
             // keep current flashes for one more request if using AutoExpireFlashBag
             $session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
         }
         $response->setContent($this->twig->render('@WebProfiler/Profiler/toolbar_redirect.html.twig', array('location' => $response->headers->get('Location'))));
         $response->setStatusCode(200);
         $response->headers->remove('Location');
     }
     if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) {
         return;
     }
     $this->injectToolbar($response, $request);
 }
Example #17
0
    /**
     * Handles the onKernelResponse event.
     *
     * @param FilterResponseEvent $event A FilterResponseEvent instance
     */
    public function onKernelResponse(FilterResponseEvent $event)
    {
        $master = $event->isMasterRequest();
        if ($this->onlyMasterRequests && !$master) {
            return;
        }

        if ($this->onlyException && null === $this->exception) {
            return;
        }

        $request = $event->getRequest();
        $exception = $this->exception;
        $this->exception = null;

        if (null !== $this->matcher && !$this->matcher->matches($request)) {
            return;
        }

        if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) {
            return;
        }

        $this->profiles[$request] = $profile;

        if (null !== $this->requestStack) {
            $this->parents[$request] = $this->requestStack->getParentRequest();
        } elseif (!$master) {
            // to be removed when requestStack is required
            array_pop($this->requests);

            $this->parents[$request] = end($this->requests);
        }
    }
Example #18
0
    public function onQuickUploadResponse(FilterResponseEvent $event)
    {
        $request = $event->getRequest();
        if ($request->get('responseType') === 'json') {
            return;
        }
        $response = $event->getResponse();
        $funcNum = $request->get('CKEditorFuncNum');
        $funcNum = preg_replace('/[^0-9]/', '', $funcNum);
        if ($response instanceof JsonResponse) {
            $responseData = $response->getData();
            $fileUrl = isset($responseData['url']) ? $responseData['url'] : '';
            $errorMessage = isset($responseData['error']['message']) ? $responseData['error']['message'] : '';
            ob_start();
            ?>
<script type="text/javascript">
    window.parent.CKEDITOR.tools.callFunction(<?php 
            echo json_encode($funcNum);
            ?>
, <?php 
            echo json_encode($fileUrl);
            ?>
, <?php 
            echo json_encode($errorMessage);
            ?>
);
</script>
            <?php 
            $event->setResponse(Response::create(ob_get_clean()));
        }
    }
 public function addLocaleCookie(FilterResponseEvent $event)
 {
     $cookies = $event->getRequest()->cookies;
     if (isset($this->locale) && (false === $cookies->has('locale') || $cookies->get('locale') !== $this->locale)) {
         $event->getResponse()->headers->setCookie(new Cookie('locale', $this->locale, 0, '/', null, false, false));
     }
 }
 /**
  * Modifies the response to apply HTTP expiration header fields.
  *
  * @param FilterResponseEvent $event The notified event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!($configuration = $event->getRequest()->attributes->get('_cache'))) {
         return;
     }
     $response = $event->getResponse();
     if (!$response->isCacheable()) {
         return;
     }
     if (null !== $configuration->getSMaxAge()) {
         $response->setSharedMaxAge($configuration->getSMaxAge());
     }
     if (null !== $configuration->getMaxAge()) {
         $response->setMaxAge($configuration->getMaxAge());
     }
     if (null !== $configuration->getExpires()) {
         $date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC'));
         $response->setExpires($date);
     }
     if (null !== $configuration->getVary()) {
         $response->setVary($configuration->getVary());
     }
     if ($configuration->isPublic()) {
         $response->setPublic();
     }
     $event->setResponse($response);
 }
 public function onRenderAdminProductCategoryEditBefore(FilterResponseEvent $event)
 {
     $app = $this->app;
     $request = $event->getRequest();
     $response = $event->getResponse();
     $id = $request->attributes->get('id');
     $CategoryContent = null;
     if ($id) {
         $CategoryContent = $app['category_content.repository.category_content']->find($id);
     }
     if (is_null($CategoryContent)) {
         $CategoryContent = new \Plugin\CategoryContent\Entity\CategoryContent();
     }
     // DomCrawlerにHTMLを食わせる
     $html = $response->getContent();
     $crawler = new Crawler($html);
     $form = $app['form.factory']->createBuilder('admin_category')->getForm();
     $form['content']->setData($CategoryContent->getContent());
     $form->handleRequest($request);
     $twig = $app->renderView('CategoryContent/Resource/template/Admin/category.twig', array('form' => $form->createView()));
     $oldCrawler = $crawler->filter('form')->first();
     // DomCrawlerからHTMLを吐き出す
     $html = $crawler->html();
     $oldHtml = '';
     $newHtml = '';
     if (count($oldCrawler) > 0) {
         $oldHtml = $oldCrawler->html();
         $newHtml = $oldHtml . $twig;
     }
     $html = str_replace($oldHtml, $newHtml, $html);
     $response->setContent($html);
     $event->setResponse($response);
 }
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     $response = $event->getResponse();
     $request = $event->getRequest();
     // do not capture redirects or modify XML HTTP Requests
     if ($request->isXmlHttpRequest()) {
         return;
     }
     // do not capture admin cms urls
     if (preg_match('/.*\\/admin\\/.*/', $request->getRequestUri())) {
         return;
     }
     try {
         $isGranted = $this->authorizationChecker->isGranted('ROLE_ADMIN');
     } catch (AuthenticationCredentialsNotFoundException $e) {
         $isGranted = false;
     }
     if (self::DISABLED === $this->mode || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) {
         return;
     }
     $this->injectToolbar($response, $request);
 }
 /**
  * Filters the Response.
  *
  * @param FilterResponseEvent $event A FilterResponseEvent instance
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!$event->isMasterRequest() || null === $this->surrogate) {
         return;
     }
     $this->surrogate->addSurrogateControl($event->getResponse());
 }
Example #24
0
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $controller = $event->getRequest()->attributes->get('_controller');
     if (empty($controller)) {
         return;
     }
     if (strpos($controller, '::') !== false) {
         $controller = explode('::', $controller, 2);
         $class = new \ReflectionClass($controller[0]);
         $method = $class->getMethod($controller[1]);
         $annotation = $this->reader->getMethodAnnotation($method, 'PSX\\PSXBundle\\Configuration\\Outgoing');
         $response = $event->getResponse();
         $writer = $this->getWriter($event->getRequest());
         if ($response instanceof DataResponse) {
             if ($annotation instanceof Outgoing) {
                 $file = $this->rootDir . '/' . $annotation->getFile();
                 $data = $this->assimilator->assimilate(JsonSchema::fromFile($file), $response->getData());
                 $response->headers->set('Content-Type', $writer->getContentType());
                 $response->setContent($writer->write($data));
             } else {
                 $data = $this->normalizeData($response->getData());
                 $response->headers->set('Content-Type', $writer->getContentType());
                 $response->setContent($writer->write($data));
             }
         } else {
             throw new RuntimeException('Can only transform responses of PSX\\PSXBundle\\DataResponse');
         }
     }
 }
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     $response = $event->getResponse();
     $request = $event->getRequest();
     // do not capture redirects or modify XML HTTP Requests
     if ($request->isXmlHttpRequest()) {
         return;
     }
     if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
         $session = $request->getSession();
         if ($session && $session->getFlashBag() instanceof AutoExpireFlashBag) {
             // keep current flashes for one more request if using AutoExpireFlashBag
             $session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
         }
         $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location'))));
         $response->setStatusCode(200);
         $response->headers->remove('Location');
     }
     if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) {
         return;
     }
     $this->injectToolbar($response);
 }
Example #26
0
 /**
  * @param FilterResponseEvent $event
  */
 public function onCoreResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
         $response = $event->getResponse();
         $response->headers->add(array("X-RequestId" => $this->requestId));
     }
 }
Example #27
0
 /**
  * @param FilterResponseEvent $event
  */
 public function onCoreResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
         $this->profiler->stopProfiling();
         if ($this->profiling) {
             $timers = $this->profiler->getTimers();
             $requestTime = microtime(true) - $this->start;
             $timers['request'] = (int) ($requestTime * 1000);
             $counters = $this->profiler->getCounters();
             $counters['request'] = 1;
             if ($this->statsd) {
                 $sample = $this->sampling / 100;
                 $route = $event->getRequest()->attributes->get('_route');
                 foreach ($timers as $key => $value) {
                     $this->statsd->timing($key, $value, $sample);
                     if ($route) {
                         $this->statsd->timing("per_route.{$key}.{$route}", $value, $sample);
                     }
                 }
                 foreach ($counters as $key => $value) {
                     $this->statsd->updateStats($key, $value, $sample);
                     if ($route) {
                         $this->statsd->updateStats("per_route.{$key}.{$route}", $value, $sample);
                     }
                 }
             }
             if ($this->logger) {
                 $this->logger->log($event->getRequest(), $timers, $counters);
             }
         }
     }
 }
Example #28
0
 /**
  * Logs master response on event KernelEvents::RESPONSE
  *
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     $this->logResponse($event->getResponse());
 }
 /**
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     $allowedMethods = $this->loader->getAllowedMethods();
     if (isset($allowedMethods[$event->getRequest()->get('_route')])) {
         $event->getResponse()->headers->set('Allow', implode(', ', $allowedMethods[$event->getRequest()->get('_route')]));
     }
 }
 public function onRenderAdminProductEditBefore(FilterResponseEvent $event)
 {
     $app = $this->app;
     $request = $event->getRequest();
     $response = $event->getResponse();
     // メーカーマスタから有効なメーカー情報を取得
     $repos = $app['eccube.plugin.mail_magazine.repository.mail_magazine'];
     $MailMagazines = $repos->findAll();
     if (is_null($MailMagazines)) {
         $MailMagazines = new \Plugin\MailMagazine\Entity\MailMagazine();
     }
     // 商品登録・編集画面のHTMLを取得し、DOM化
     $crawler = new Crawler($response->getContent());
     $form = $app['form.factory']->createBuilder('admin_product_mail_magazine')->getForm();
     $form->get('mail_magazine')->setData($MailMagazines);
     $form->handleRequest($request);
     $parts = $app->renderView('MailMagazine/View/admin/product_mail_magazine.twig', array('form' => $form->createView()));
     // form1の最終項目に追加(レイアウトに依存(時間無いのでベタ))
     $html = $crawler->html();
     $form = $crawler->filter('#form1 .accordion')->last()->html();
     $new_form = $form . $parts;
     $html = str_replace($form, $new_form, $html);
     $response->setContent($html);
     $event->setResponse($response);
 }