contextManager = $contextManager; } public function generateTemplateParameter(string $action, $entity, Request $request, array $defaultTemplateParameters = []) { switch ($action) { case 'new': $context = $this->contextManager->getContextByKey($request->get('context')); // no break case 'edit': $context = $this->contextManager->getContextByDocGeneratorTemplate($entity); return array_merge( $defaultTemplateParameters, ['context' => $context] ); case 'index': return array_merge( $defaultTemplateParameters, ['contextManager' => $this->contextManager] ); default: return parent::generateTemplateParameter($action, $entity, $request, $defaultTemplateParameters); // TODO: Change the autogenerated stub } } public function new(Request $request): Response { if (!$request->query->has('context')) { return $this->redirectToRoute('chill_docgen_admin_template_pick-context'); } return parent::new($request); } /** * @Route("{_locale}/admin/docgen/template/pick-context", name="chill_docgen_admin_template_pick-context") */ public function pickContext(Request $request): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); return $this->render('ChillDocGeneratorBundle:Admin/DocGeneratorTemplate:pick-context.html.twig', [ 'contexts' => $this->contextManager->getContexts(), ]); } protected function createEntity(string $action, Request $request): object { /** @var DocGeneratorTemplate $entity */ $entity = parent::createEntity($action, $request); $key = $request->query->get('context'); $context = $this->contextManager->getContextByKey($key); $entity->setContext($key)->setEntity($context->getEntityClass()); return $entity; } }