Updated form to accommodate new datatype.

This commit is contained in:
krzysiej
2022-05-23 15:13:26 +02:00
parent cd622f1c05
commit dddd432e3b
7 changed files with 181 additions and 88 deletions

View File

@@ -3,11 +3,12 @@
namespace App\Controller;
use App\Entity\Book;
use App\Entity\File;
use App\Form\BookType;
use App\Repository\BookRepository;
use App\Repository\FileRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
@@ -43,14 +44,13 @@ class BookController extends AbstractController
$ebook = $request->files->get('book')['ebook'];
if ($ebook) {
dd($ebook);
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '.' . $ebook->guessClientExtension()
);
}
dd($book->getId());
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
}
@@ -69,8 +69,12 @@ class BookController extends AbstractController
}
#[Route('/{id}/edit', name: 'app_book_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Book $book, BookRepository $bookRepository): Response
{
public function edit(
Request $request,
Book $book,
BookRepository $bookRepository,
FileRepository $fileRepository
): Response {
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
@@ -83,20 +87,29 @@ class BookController extends AbstractController
);
}
/** @var \Symfony\Component\HttpFoundation\File\UploadedFile $ebook */
$ebook = $request->files->get('book')['ebook'];
if ($ebook) {
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '.' . $ebook->guessClientExtension()
);
/** @var \Symfony\Component\HttpFoundation\File\UploadedFile[] $ebooks */
$ebooks = $request->files->get('book')['ebook'];
if (count($ebooks) > 0) {
foreach ($ebooks as $ebook) {
$file = new File();
$file->setFileName(trim($ebook->getClientOriginalName()));
$file->setFileSize($ebook->getSize());
$file->setExtension($ebook->guessClientExtension());
$file->setBook($book);
$fileRepository->add($file, true);
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '_' . md5(
$ebook->getClientOriginalName()
) . '.' . $ebook->guessClientExtension()
);
}
}
$book->setOriginalFilename($ebook->getClientOriginalName());
$bookRepository->add($book, true);
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
return $this->redirectToRoute('app_book_edit', ['id' => $book->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('book/edit.html.twig', [
@@ -119,7 +132,10 @@ class BookController extends AbstractController
public function downloadBook(Book $book): BinaryFileResponse
{
return $this->file(
$this->getParameter('book_files') . '/' . 'ebook_' . $book->getId() . '.'.pathinfo($book->getOriginalFilename(), PATHINFO_EXTENSION),
$this->getParameter('book_files') . '/' . 'ebook_' . $book->getId() . '.' . pathinfo(
$book->getOriginalFilename(),
PATHINFO_EXTENSION
),
$book->getOriginalFilename()
);
}