createFormBuilder() ->getForm() ; $form->handleRequest($request); // Handle upload independently from form submission to avoid issues with failing validation $uploadSession = $this->uploadHandler->getUploadSession(); $uploadedDocuments = []; if (true === $request->isMethod('POST') && 0 < $uploadSession->getCount()) { /** @var User $user */ $user = $this->getUser(); foreach ($uploadSession->getUploadsByType(Upload::TYPE_DOCUMENT) as $upload) { $document = Upload::fromUploadDto($upload, $user, Upload::TYPE_DOCUMENT); $uploadedDocuments[] = $document; $this->entityManager->persist($document); } $this->entityManager->flush(); $this->uploadHandler->moveUploadSessionFilesFromOrphanage(Upload::TYPE_DOCUMENT, $uploadSession); $this->uploadHandler->removeUploadSessionUploadsByType(Upload::TYPE_DOCUMENT); } if ($form->isSubmitted() && $form->isValid()) { $count = count($uploadedDocuments); $this->addFlash('success', 1 === $count ? 'Das Dokument wurde hochgeladen' : 'Die Dokumente wurden hochgeladen'); $loggerContext = []; foreach ($uploadedDocuments as $document) { $loggerContext[] = [ 'document_id' => $document->getId(), 'document_filename' => $document->getOriginalFilename(), ]; } $this->logger->info('Upload document(s)', $loggerContext); return new HxRedirectResponse($this->generateUrl('app_administrative_system_document_index')); } return $this->render('administrative/system/document/modal_upload.html.twig', [ 'form' => $form->createView(), ]); } }