<?php
namespace App\Controller;
use App\Entity\Category;
use App\Form\CategoryType;
use App\Repository\CategoryRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Post;
use Doctrine\ORM\EntityManagerInterface;
/**
* @Route("/category")
*/
class CategoryController extends AbstractController
{
/**
* @Route("/", name="category_index", methods={"GET"})
*@IsGranted("ROLE_USER", message="No access! Get out!")
*/
public function index(CategoryRepository $categoryRepository): Response
{
return $this->render('category/index.html.twig', [
'categories' => $categoryRepository->findAll(),
]);
}
/**
* @Route("/new", name="category_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
$category = new Category();
$form = $this->createForm(CategoryType::class, $category);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$category->setSlug($category->getName().'-'.uniqid());
$entityManager->persist($category);
$entityManager->flush();
$this->addFlash(
'success',
"Votre enregistrement a été effectué avec succès!"
);
return $this->redirectToRoute('category_index');
}
return $this->render('category/new.html.twig', [
'category' => $category,
'form' => $form->createView(),
]);
}
/**
* @Route("/{slug}", name="category_show", methods={"GET"})
*/
public function show(Category $category): Response
{
return $this->render('category/show.html.twig', [
'category' => $category,
]);
}
/**
* @Route("/{slug}/edit", name="category_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Category $category): Response
{
$form = $this->createForm(CategoryType::class, $category);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$category->setSlug($category->getName().'-'.uniqid());
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('category_index');
}
return $this->render('category/edit.html.twig', [
'category' => $category,
'form' => $form->createView(),
]);
}
/**
* @Route("/{slug}", name="category_delete", methods={"DELETE"})
*/
public function delete(Request $request, Category $category): Response
{
if ($this->isCsrfTokenValid('delete'.$category->getSlug(), $request->request->get('_token'))) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($category);
$entityManager->flush();
}
return $this->redirectToRoute('category_index');
}
/**
* @Route("/blog/{category_name}", name="blog_category", methods={"GET"})
* @Entity("Category", expr="repository.find(category.name)")
*/
public function blog(String $category_name): Response
{
$repository = $this->getDoctrine()->getRepository(Post::class);
$posts = $repository->findPostByCategorie($category_name);
$latest= $repository->findBylast();
return $this->render('front/blog.html.twig', [
'category' => $category_name,
'posts' => $posts,
'latest' => $latest,
]);
}
/**
* @Route("/newblog/{category_name}", name="new_blog_category", methods={"GET"})
* @Entity("Category", expr="repository.find(category.name)")
*/
public function newblog(String $category_name, Request $request): Response
{
$page =$request->query->getInt('page',1);
$repository = $this->getDoctrine()->getRepository(Post::class);
$posts = $repository->findPostByCategorie($category_name, $page);
$latest= $repository->findBylast();
//dd($posts);
return $this->render('newwebfront/blog.html.twig', [
'category' => $category_name,
'posts' => $posts,
'latest' => $latest,
]);
}
}