Removed encore added books crud
This commit is contained in:
126
src/Controller/BookController.php
Normal file
126
src/Controller/BookController.php
Normal 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()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user