<?php
namespace App\Controller\Back;
use App\Entity\Category;
use App\Entity\SubCategory;
use App\Form\CategoryType;
use App\Form\SubCategoryType;
use App\Repository\SubCategoryRepository;
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 SubCategoryController 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("/sub-category/list", name="back_subcategory_list")
*/
public function list(SubCategoryRepository $subCategoryRepository)
{
return $this->render('back/subcategory/list.html.twig', [
'subcategories' => $subCategoryRepository->findBy([], ['id' => 'DESC'])
]);
}
/**
* @Route("/sub-category/add", name="back_subcategory_add")
*/
public function add(Request $request)
{
$subCategory = new SubCategory();
$form = $this->createForm(SubCategoryType::class, $subCategory)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sluggedName = $this->slugger->slug($subCategory->getName())->lower();
$subCategory->setSlug($sluggedName);
$this->em->persist($subCategory);
$this->em->flush();
$this->addFlash('success', 'Sous-catégorie créée');
return $this->redirectToRoute('back_subcategory_list');
}
return $this->render('back/subcategory/add.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/sub-category/edit/{id}", name="back_subcategory_edit")
*/
public function edit(SubCategory $subCategory, Request $request)
{
$form = $this->createForm(SubCategoryType::class, $subCategory)->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sluggedName = $this->slugger->slug($subCategory->getName())->lower();
$subCategory->setSlug($sluggedName);
$this->em->flush();
$this->addFlash('success', 'Sous-catégorie éditée');
return $this->redirectToRoute('back_subcategory_list');
}
return $this->render('back/subcategory/edit.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/sub-category/remove/{id}", name="back_subcategory_remove")
*/
public function remove(SubCategory $subCategory)
{
$this->em->remove($subCategory);
$this->em->flush();
$this->addFlash('success', 'Sous-catégorie supprimée');
return $this->redirectToRoute('back_subcategory_list');
}
}