<?php
namespace App\Controller;
use App\Entity\Experience;
use App\Form\ExperienceType;
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;
use Symfony\Component\String\Slugger\SluggerInterface;
class ExperienceController extends AbstractController
{
public function __construct(EntityManagerInterface $manager)
{
$this->manager = $manager;
}
/* ------------------ Poster une éxperience ----------------*/
/**
* @Route("/experience", name="app_experience")
*/
public function index(Request $request): Response
{
// Creation de l'instance Experience
$experience = new Experience();
// Création du formulaire à partir d'une classe issu du fichier CompetenceType.php
$formExp = $this->createForm(ExperienceType::class, $experience);
// Traitement du formulaire
$formExp->handleRequest($request);
// Si le formulaire est soumis et validé , alors...
if ($formExp->isSubmitted() && $formExp->isValid()) {
// $projet->setPublication(new \datetime);
// $projet->setAuteur($this->getUser()->getNomComplet());
// On persiste l'experience professionnelle'
$this->manager->persist($experience);
// On le flush
$this->manager->flush();
}
return $this->render('experience/index.html.twig', [
'monExp' => $formExp->createView(),
]);
}
/* ------------------ Effacer une expérience ---------------- */
/**
* @Route("/experience/delete/{id}", name="app_experience_delete")
*/
public function expDelete(Experience $experience, Request $request): Response
{
// On efface la compétence
$this->manager->remove($experience);
// On flush
$this->manager->flush();
return $this->redirectToRoute('app_home');
}
/* ------------------ Modifier l'expérience' ---------------- */
/**
* @Route("/expérience/edit/{id}", name="app_experience_edit")
*/
public function expEdit(Experience $expModif, Request $request): Response
{
$expModif = $this->createForm(ExperienceType::class, $expModif);
// Traitement du formulaire
$expModif->handleRequest($request);
// Si le formulaire est soumis et validé , alors...
if ($expModif->isSubmitted() && $expModif->isValid()) {
// On persiste l'expérience modifié
$this->manager->persist($expModif);
// On le flush
$this->manager->flush();
// On redirige ensuite à la page qui liste les expériences
return $this->redirectToRoute('app_all_experiences');
}
return $this->render('experience/editExp.html.twig', [
// Matérialise l'affichage du formulaire
'myEditExp' => $expModif->createView(),
]);
}
/* ------------ Recherche et trouve tous les experiences professionnelles ------------ */
/**
* @Route("/all/experience", name="app_all_experiences")
*/
public function allExperiences(): Response
{
$experiences = $this->manager->getRepository(Experience::class)->findAll();
// Verifier que la variable a bien recu les données cherchés dans la BDD
return $this->render('experience/allExperiences.html.twig', [
// Matérialise l'affichage du formulaire
'experiences' => $experiences,
]);
}
/**
* @Route("/all/experienceVue", name="app_all_experiences_Vue")
*/
public function allExperiencesVue(): Response
{
$experiences = $this->manager->getRepository(Experience::class)->findby(array(), array('date_debut' => 'DESC'));
//$experiencess = $this->manager->getRepository(Experience::class)->findBy(['datedebut']);
// Verifier que la variable a bien recu les données cherchés dans la BDD
return $this->render('experience/allExperiencesVue.html.twig', [
// Matérialise l'affichage du formulaire
'experiences' => $experiences,
//'experiencess' => $experiencess,
]);
}
}