src/Controller/Admin/AdminPictureController.php
<?php
namespace App\Controller\Admin;
use App\Entity\Figures;
use App\Entity\Picture;
use App\Form\PictureType;
use App\Repository\PictureRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\Common\Persistence\ObjectManager;
/**
* @Route("admin/picture")
*/
class AdminPictureController extends AbstractController
{
/**
* @var ObjectManager
*/
private $em;
public function __construct(ObjectManager $em)
{
$this->em = $em;
}
/**
* @Route("/new", name="admin.picture.new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
$picture = new Picture();
$form = $this->createForm(PictureType::class, $picture);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$date = new \DateTime();
$picture->setUpdatedAt($date);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($picture);
$entityManager->flush();
return $this->redirectToRoute('home');
}
return $this->render('admin/picture/new.html.twig', [
'picture' => $picture,
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}/{idFigure}/edit", name="admin.picture.edit", methods={"GET","POST"})
*/
public function edit(Request $request, Picture $picture): Response
{
$params = $request->attributes->get('_route_params');
$idFigure = $params['idFigure'];
$figure = $this->getDoctrine()
->getRepository(Figures::class)
->find($idFigure);
$form = $this->createForm(PictureType::class, $picture);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$picture->setUpdatedAt(new \DateTime());
$picture->setImageFile($form->get('imageFile')->getData());
$this->em->flush();
$this->addFlash('success', 'L\'image a bien été modifiée');
return $this->redirectToRoute('home');
}
return $this->render('admin/picture/edit.html.twig', [
'picture' => $picture,
'figure' => $figure,
'current_menu' => "admin.picture.edit",
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}", name="admin.picture.delete", methods={"DELETE"})
*/
public function delete(Request $request, Picture $picture): Response
{
$data = json_decode($request->getContent(), true);
if ($this->isCsrfTokenValid('delete' . $picture->getId(), $data['_token'])) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($picture);
$entityManager->flush();
return new JsonResponse(['success' => 1]);
}
return new JsonResponse(['error' => 'Une erreur est survenue'], 400);
}
}