<?php
namespace App\Controller;
use App\Entity\Contact;
use App\Form\ContactType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ContactController extends AbstractController
{
public function __construct(EntityManagerInterface $manager)
{
$this->manager = $manager;
}
/* ------------------ Poster un contact ----------------*/
/**
* @Route("/contact", name="app_contact")
*/
public function index(Request $request): Response
{
// Création d'une instance "contact"
$contact = new Contact();
// Création du formulaire de contact à partir de ContactType.php
$formContact = $this->createForm(ContactType::class, $contact);
// Traitement du formulaire formContact
$formContact->handleRequest($request);
// Si le formulaire est soumis et validé , alors...
if ($formContact->isSubmitted() && $formContact->isValid()) {
// On persiste le contact
$this->manager->persist($contact);
// On flush
$this->manager->flush();
}
return $this->render('contact/index.html.twig', [
'controller_name' => 'ContactController',
'myContact' => $formContact->createView(),
]);
}
/* ------------------ Effacer le contact ---------------- */
/**
* @Route("/contact/delete/{id}", name="app_contact_delete")
*/
public function articleDelete(Contact $contact, Request $request): Response
{
// On efface le contact
$this->manager->remove($contact);
// On flush
$this->manager->flush();
return $this->redirectToRoute('app_home');
}
/* ------------------ Modifier le contact ---------------- */
/**
* @Route("/contact/edit/{id}", name="app_contact_edit")
*/
public function articleEdit(Contact $contactModif, Request $request): Response
{
$contactModif = $this->createForm(ContactType::class, $contactModif);
// Traitement du formulaire
$contactModif->handleRequest($request);
// Si le formulaire est soumis et validé , alors...
if ($contactModif->isSubmitted() && $contactModif->isValid()) {
//$contactModif->setPublication(new \datetime);
// On persiste le contact modifié
$this->manager->persist($contactModif);
// On le flush
$this->manager->flush();
// On redirige ensuite à la page qui liste les contacts
return $this->redirectToRoute('app_all_contacts');
}
return $this->render('contact/editContact.html.twig', [
// Matérialise l'affichage du formulaire
'myEditContact' => $contactModif->createView(),
]);
}
/* ------------ Recherche et trouve tous les contacts ------------ */
/**
* @Route("/all/contact", name="app_all_contacts")
*/
public function allContacts(): Response
{
$contacts = $this->manager->getRepository(Contact::class)->findAll();
// Verifier que la variable a bien recu les données cherchés dans la BDD
// dd($contacts);
return $this->render('contact/allContacts.html.twig', [
// Matérialise l'affichage du formulaire
'contacts' => $contacts,
]);
}
}