vendor/friendsofsymfony/rest-bundle/EventListener/AllowedMethodsListener.php line 37

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the FOSRestBundle package.
  4.  *
  5.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace FOS\RestBundle\EventListener;
  11. use FOS\RestBundle\FOSRestBundle;
  12. use FOS\RestBundle\Response\AllowedMethodsLoader\AllowedMethodsLoaderInterface;
  13. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  14. /**
  15.  * Listener to append Allow-ed methods for a given route/resource.
  16.  *
  17.  * @author Boris GuĂ©ry <[email protected]>
  18.  *
  19.  * @internal
  20.  */
  21. class AllowedMethodsListener
  22. {
  23.     private $loader;
  24.     public function __construct(AllowedMethodsLoaderInterface $loader)
  25.     {
  26.         $this->loader $loader;
  27.     }
  28.     /**
  29.      * @param ResponseEvent $event
  30.      */
  31.     public function onKernelResponse($event)
  32.     {
  33.         $request $event->getRequest();
  34.         if (!$request->attributes->get(FOSRestBundle::ZONE_ATTRIBUTEtrue)) {
  35.             return;
  36.         }
  37.         $allowedMethods $this->loader->getAllowedMethods();
  38.         if (isset($allowedMethods[$event->getRequest()->get('_route')])) {
  39.             $event->getResponse()
  40.                 ->headers
  41.                 ->set('Allow'implode(', '$allowedMethods[$event->getRequest()->get('_route')]));
  42.         }
  43.     }
  44. }