src/Action/PressSite/Content/GenericPageAction.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Action\PressSite\Content;
  3. use App\Action\PressSite\DomainAwareAction;
  4. use App\Contract\PressSite\Language\Switcher\EntityActionInterface;
  5. use App\Service\PressSite\DomainAwareManager;
  6. use App\Service\PressSite\GenericPageHelper;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Twig\Environment;
  11. /**
  12.  * Class GenericPageAction.
  13.  */
  14. class GenericPageAction extends DomainAwareAction implements EntityActionInterface
  15. {
  16.     /**
  17.      * The custom page helper.
  18.      *
  19.      * @var \App\Service\PressSite\GenericPageHelper
  20.      */
  21.     private $genericPageHelper;
  22.     public function __construct(
  23.         Environment $twig,
  24.         DomainAwareManager $domainAwareManager,
  25.         GenericPageHelper $genericPageHelper
  26.     ) {
  27.         parent::__construct($twig$domainAwareManager);
  28.         $this->genericPageHelper $genericPageHelper;
  29.     }
  30.     /**
  31.      * Responsible for rendering the content of dynamic page.
  32.      *
  33.      * @param \Symfony\Component\HttpFoundation\Request $request
  34.      *   The current request object
  35.      * @param int $id
  36.      *   The ID of the page entity
  37.      * @param string $slug
  38.      *   The slug of the localized page
  39.      *
  40.      * @return \Symfony\Component\HttpFoundation\Response
  41.      *   The response object to return
  42.      */
  43.     public function __invoke(Request $requestint $idstring $slug): Response
  44.     {
  45.         $currentSite $this->getDomainManager()->getCurrentByHostnameAndLocale();
  46.         $language $currentSite->getLanguageCode();
  47.         $this->genericPageHelper->setId($id);
  48.         $this->genericPageHelper->setSlug($slug);
  49.         $this->genericPageHelper->setLanguageCode($language);
  50.         if (!$this->genericPageHelper->isValid()) {
  51.             throw new NotFoundHttpException('Page not found');
  52.         }
  53.         return $this->render('press_site/actions/content/generic_page.html.twig', [
  54.             'entity' => $this->genericPageHelper->getPageEntity(),
  55.             'localizedEntity' => $this->genericPageHelper->getPageLocalizationEntity(),
  56.         ]);
  57.     }
  58. }