'[a-z0-9_]+'], defaults: ['questionnaire' => QuestionnaireCatalog::TEAMER_FEEDBACK], )] #[IsGranted('ROLE_ADMINISTRATIVE')] public function index(string $questionnaire, Request $request): Response { $keys = $this->catalog->keys(); if (!in_array($questionnaire, $keys, true)) { throw $this->createNotFoundException(sprintf('No questionnaire "%s"', $questionnaire)); } $filterDto = $this->filterHandler->getFilterSettings(); $pagination = $this->paginator->paginate( $this->responseRepository->getListQuery($questionnaire, $filterDto), $request->query->getInt('page', 1), $request->query->getInt('limit', 50), [ 'defaultSortFieldName' => 'response.submittedAt', 'defaultSortDirection' => 'desc', ] ); return $this->render('administrative/questionnaire/index.html.twig', [ 'definition' => $this->catalog->get($questionnaire), // for switching between the questionnaires 'definitions' => array_map($this->catalog->get(...), $keys), 'pagination' => $pagination, 'filterDto' => $filterDto, ]); } }