<?php
namespace App\Controller\Back;
use App\Entity\Category;
use App\Form\CategoryType;
use App\Repository\CategoryRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\String\Slugger\SluggerInterface;
/**
* @Route("/admin")
*/
class CategoryController extends AbstractController
{
/**
* @var EntityManagerInterface
*/
private EntityManagerInterface $em;
/**
* @var SluggerInterface
*/
private SluggerInterface $slugger;
public function __construct(EntityManagerInterface $em, SluggerInterface $slugger)
{
$this->em = $em;
$this->slugger = $slugger;
}
/**
* @Route("/category/list", name="back_category_list")
*/
public function list(CategoryRepository $categoryRepository)
{
return $this->render('back/category/list.html.twig', [
'categories' => $categoryRepository->findBy([], ['id' => 'DESC'])
]);
}
/**
* @Route("/category/add", name="back_category_add")
*/
public function add(Request $request)
{
$category = new Category();
$form = $this->createForm(CategoryType::class, $category)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sluggedName = $this->slugger->slug($category->getName())->lower();
$category->setSlug($sluggedName);
$this->em->persist($category);
$this->em->flush();
$this->addFlash('success', 'Catégorie créée');
return $this->redirectToRoute('back_category_list');
}
return $this->render('back/category/add.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/category/edit/{id}", name="back_category_edit")
*/
public function edit(Category $category, Request $request)
{
$form = $this->createForm(CategoryType::class, $category)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sluggedName = $this->slugger->slug($category->getName())->lower();
$category->setSlug($sluggedName);
$this->em->flush();
$this->addFlash('success', 'Catégorie éditée');
return $this->redirectToRoute('back_category_list');
}
return $this->render('back/category/edit.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/category/remove/{id}", name="back_category_remove")
*/
public function remove(Category $category)
{
$this->em->remove($category);
$this->em->flush();
$this->addFlash('success', 'Catégorie supprimée');
return $this->redirectToRoute('back_category_list');
}
}