<?php
namespace App\Controller;
use App\Entity\Blog;
use App\Form\BlogType;
use App\Repository\BlogRepository;
use App\Repository\SectionTitleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;
//use Symfony\Component\HttpFoundation\Request;
/**
* @Route("/blog")
*/
class BlogController extends AbstractController {
/**
* @Route("/", name="app_blog_index", methods={"GET"})
*/
public function index(BlogRepository $blogRepository, SectionTitleRepository $sectionRepo, Request $request, Environment $twig): Response {
// $offset = max(0, $request->query->getInt('offset', 0));
// $paginator = $blogRepository->getBlogPaginator($blog, $offset);
$blogIndex = $sectionRepo->findTitleByTag('blog_index');
return $this->render('blog/index.html.twig', [
'blogs' => $blogRepository->findAll(),
'blogTitle' => $blogIndex,
// 'blogpage' => $paginator,
// 'previous' => $offset - BlogRepository::PAGINATOR_PER_PAGE,
// 'next' => min(count($paginator), $offset + BlogRepository::PAGINATOR_PER_PAGE),
]);
}
//
// /**
// * @Route("/new", name="app_blog_new", methods={"GET", "POST"})
// */
// public function new(Request $request, BlogRepository $blogRepository): Response
// {
// $blog = new Blog();
// $form = $this->createForm(BlogType::class, $blog);
// $form->handleRequest($request);
//
// if ($form->isSubmitted() && $form->isValid()) {
// $blogRepository->add($blog);
// return $this->redirectToRoute('app_blog_index', [], Response::HTTP_SEE_OTHER);
// }
//
// return $this->renderForm('blog/new.html.twig', [
// 'blog' => $blog,
// 'form' => $form,
// ]);
// }
/**
* @Route("/{id}-{slug}", name="app_blog_show", methods={"GET"})
*/
public function show(Blog $blog, BlogRepository $blogRepo, $id, $slug = null): Response {
$article = $blogRepo->find($id);
if (!$article) {
throw new NotFoundHttpException();
}
if ($article->getSlug() !== $slug) {
return $this->redirectToRoute('app_blog_show', [
'id' => $id,
'slug' => $article->getSlug(),
]);
}
return $this->render('blog/show.html.twig', [
'blog' => $blog,
]);
}
/**
* @Route("/{id}/edit", name="app_blog_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Blog $blog, BlogRepository $blogRepository): Response {
$form = $this->createForm(BlogType::class, $blog);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$blogRepository->add($blog);
return $this->redirectToRoute('app_blog_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('blog/edit.html.twig', [
'blog' => $blog,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_blog_delete", methods={"POST"})
*/
public function delete(Request $request, Blog $blog, BlogRepository $blogRepository): Response {
if ($this->isCsrfTokenValid('delete' . $blog->getId(), $request->request->get('_token'))) {
$blogRepository->remove($blog);
}
return $this->redirectToRoute('app_blog_index', [], Response::HTTP_SEE_OTHER);
}
}