<?php
namespace App\Controller;
use App\Entity\Articles;
use App\Form\ArticlesType;
use App\Repository\ArticlesRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
/**
* @Route("/articles")
* @Security("is_granted('ROLE_ADMIN')")
*/
class ArticlesController extends AbstractController
{
/**
* @Route("/liste/{page}", name="app_articles_index", methods={"GET"})
*/
public function index(ArticlesRepository $articlesRepository,$page): Response
{
return $this->render('articles/index.html.twig', [
'articles' => $articlesRepository->findBy(array('Pages'=>$page)),
]);
}
/**
* @Route("/new", name="app_articles_new", methods={"GET", "POST"})
*/
public function new(Request $request, ArticlesRepository $articlesRepository): Response
{
$article = new Articles();
$form = $this->createForm(ArticlesType::class, $article);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $form->get('Image')->getData();
if($file != 'ok') {
$path = '/';
$fileName = uniqid().'-'.$file->getClientOriginalName();
$file->move(
$this->getParameter('uploads_directory').$path,
$fileName
);
$article->setImage($fileName);
}
$articlesRepository->add($article, true);
return $this->redirectToRoute('app_articles_index', ['page'=>$article->getPages()->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('articles/new.html.twig', [
'article' => $article,
'image'=>'',
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_articles_show", methods={"GET"})
*/
public function show(Articles $article): Response
{
return $this->render('articles/show.html.twig', [
'article' => $article,
]);
}
/**
* @Route("/{id}/edit", name="app_articles_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Articles $article, ArticlesRepository $articlesRepository): Response
{
$oldImage = $article->getImage();
$form = $this->createForm(ArticlesType::class, $article);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $form->get('Image')->getData();
if($file != 'ok') {
$path = '/';
$fileName = uniqid().'-'.$file->getClientOriginalName();
$file->move(
$this->getParameter('uploads_directory').$path,
$fileName
);
$article->setImage($fileName);
}
else
{
$article->setImage($oldImage);
}
$articlesRepository->add($article, true);
return $this->redirectToRoute('app_articles_index', ['page'=>$article->getPages()->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('articles/edit.html.twig', [
'article' => $article,
'image'=>$article->getImage(),
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_articles_delete", methods={"POST"})
*/
public function delete(Request $request, Articles $article, ArticlesRepository $articlesRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$article->getId(), $request->request->get('_token'))) {
$page = $article->getPages()->getId();
if($article->getImage() != 'ok')
{
unlink("../public/uploads/".$article->getImage());
}
$articlesRepository->remove($article, true);
}
return $this->redirectToRoute('app_articles_index', ['page'=>$page], Response::HTTP_SEE_OTHER);
}
}