src/Bidcoz/Bundle/CoreBundle/Request/ParamConverter/OrganizationParamConverter.php line 40

Open in your IDE?
  1. <?php
  2. namespace Bidcoz\Bundle\CoreBundle\Request\ParamConverter;
  3. use Bidcoz\Bundle\CoreBundle\Entity\Organization;
  4. use Doctrine\ORM\EntityManager;
  5. use RS\DiExtraBundle\Annotation as DI;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  7. use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. /**
  11.  * @DI\Service
  12.  * @DI\Tag("request.param_converter", attributes={"converter"="organization", "priority"="10"})
  13.  */
  14. class OrganizationParamConverter implements ParamConverterInterface
  15. {
  16.     private $em;
  17.     /**
  18.      * @DI\InjectParams({
  19.      *     "em" = @DI\Inject("doctrine.orm.default_entity_manager")
  20.      * })
  21.      */
  22.     public function __construct(EntityManager $em)
  23.     {
  24.         $this->em $em;
  25.     }
  26.     public function apply(Request $requestParamConverter $configuration)
  27.     {
  28.         $slug $request->attributes->get('orgSlug');
  29.         $organization $this->em
  30.             ->getRepository(Organization::class)
  31.             ->findOneBySlug($slug);
  32.         if (!$organization) {
  33.             throw new NotFoundHttpException('Organization not found.');
  34.         }
  35.         $param $configuration->getName();
  36.         $request->attributes->set($param$organization);
  37.         return true;
  38.     }
  39.     public function supports(ParamConverter $configuration)
  40.     {
  41.         return "Bidcoz\Bundle\CoreBundle\Entity\Organization" === $configuration->getClass();
  42.     }
  43. }