Removed encore added books crud

This commit is contained in:
krzysiej
2022-05-20 14:53:13 +02:00
parent ac3f054dec
commit 210318eca4
31 changed files with 611 additions and 299 deletions

View File

@@ -0,0 +1,126 @@
<?php
namespace App\Controller;
use App\Entity\Book;
use App\Form\BookType;
use App\Repository\BookRepository;
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;
#[Route('/book')]
class BookController extends AbstractController
{
#[Route('/', name: 'app_book_index', methods: ['GET'])]
public function index(BookRepository $bookRepository): Response
{
return $this->render('book/index.html.twig', [
'books' => $bookRepository->findAll(),
]);
}
#[Route('/new', name: 'app_book_new', methods: ['GET', 'POST'])]
public function new(Request $request, BookRepository $bookRepository): Response
{
$book = new Book();
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$bookRepository->add($book, true);
$cover = $request->files->get('book')['cover'];
if ($cover) {
$cover->move(
$this->getParameter('book_covers'),
'cover_' . $book->getId() . '.' . $cover->guessClientExtension()
);
}
$ebook = $request->files->get('book')['ebook'];
if ($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);
}
return $this->renderForm('book/new.html.twig', [
'book' => $book,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_book_show', methods: ['GET'])]
public function show(Book $book): Response
{
return $this->render('book/show.html.twig', [
'book' => $book,
]);
}
#[Route('/{id}/edit', name: 'app_book_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Book $book, BookRepository $bookRepository): Response
{
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$cover = $request->files->get('book')['cover'];
if ($cover) {
$cover->move(
$this->getParameter('book_covers'),
'cover_' . $book->getId() . '.jpg'
);
}
/** @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()
);
}
$book->setOriginalFilename($ebook->getClientOriginalName());
$bookRepository->add($book, true);
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('book/edit.html.twig', [
'book' => $book,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_book_delete', methods: ['POST'])]
public function delete(Request $request, Book $book, BookRepository $bookRepository): Response
{
if ($this->isCsrfTokenValid('delete' . $book->getId(), $request->request->get('_token'))) {
$bookRepository->remove($book, true);
}
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/download/{id}', name: 'app_book_download', methods: ['GET'])]
public function downloadBook(Book $book): BinaryFileResponse
{
return $this->file(
$this->getParameter('book_files') . '/' . 'ebook_' . $book->getId() . '.'.pathinfo($book->getOriginalFilename(), PATHINFO_EXTENSION),
$book->getOriginalFilename()
);
}
}