src/Controller/Content/App/DocumentController.php line 77

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Content\App;
  4. use Doctrine\ORM\UnexpectedResultException;
  5. use App\Entity\Content\Document;
  6. use App\Entity\Content\DocumentCategory;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. /**
  14. * ProductDocument controller.
  15. *
  16. * @Route("/{_locale}/document", requirements={"_locale": "\w{2}"})
  17. */
  18. class DocumentController extends AbstractController
  19. {
  20. /**
  21. * Lists all document entities.
  22. *
  23. * @Route("/", name="app_document_index", methods={"GET"})
  24. *
  25. * @return Response
  26. */
  27. public function indexAction(
  28. Request $request,
  29. PaginatorInterface $paginator
  30. ): Response {
  31. $repo = $this->getDoctrine()->getRepository(Document::class);
  32. return $this->render('Content/Public/Document/index.html.twig', [
  33. 'documents' => $paginator->paginate(
  34. $repo->createByCategoryQueryBuilder($request->get("category")),
  35. (int) $request->get('page', 1),
  36. (int) $request->get('itemsPerPage', 8)
  37. ),
  38. 'document_categories' => $this
  39. ->getDoctrine()
  40. ->getRepository(DocumentCategory::class)
  41. ->findAll()
  42. ]);
  43. }
  44. /**
  45. * Lists all document entities.
  46. *
  47. * @Route("/widget", name="app_document_widget")
  48. *
  49. * @Cache(expires="+2 days", public=true)
  50. *
  51. * @param PaginatorInterface $paginator
  52. *
  53. * @return array|Response
  54. */
  55. public function widgetAction(PaginatorInterface $paginator)
  56. {
  57. $categorySlug = $this->get('request_stack')->getMasterRequest()->get('category', null);
  58. $page = (int) $this->get('request_stack')->getMasterRequest()->get('page', 1);
  59. $category = null;
  60. if (!empty($categorySlug)) {
  61. try {
  62. /** @var DocumentCategory $category */
  63. $category = $this->getDoctrine()
  64. ->getRepository(DocumentCategory::class)
  65. ->findOneBySlug($categorySlug)
  66. ->getName();
  67. } catch (UnexpectedResultException $e) {
  68. }
  69. }
  70. $this->get('session')->set('subtitle', $category);
  71. return $this->render('Content/Public/Document/widget.html.twig', [
  72. 'documents' => $paginator->paginate(
  73. $this->getDoctrine()
  74. ->getRepository(Document::class)
  75. ->createByCategoryQueryBuilder($categorySlug),
  76. $page
  77. ),
  78. 'document_categories' => $this
  79. ->getDoctrine()
  80. ->getRepository(DocumentCategory::class)
  81. ->findAll()
  82. ]);
  83. }
  84. }