src/Controller/PageController.php line 169
<?phpnamespace App\Controller;use App\Entity\Offre;use App\Form\ContactType;use App\Form\OffresSearchType;use App\Service\CallApiService;use App\Form\SearchOffresPoType;use Symfony\Component\Mime\Email;use App\Repository\OffreRepository;use Symfony\Component\Mime\Address;use App\Repository\SecteurRepository;use App\Repository\SettingRepository;use App\Repository\PartenaireRepository;use Doctrine\ORM\EntityManagerInterface;use App\Repository\OrganisateurRepository;use Knp\Component\Pager\PaginatorInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;class PageController extends AbstractController{#[Route('/', name: 'app_home')]public function home(SettingRepository $settingRepository,Request $request,MailerInterface $mailer,): Response{// form$form = $this->createForm(ContactType::class);$form->handleRequest($request);// On recherche l'email et le nom du site dans Setting$dataMail = $settingRepository->findAll();$siteEmail = $dataMail[0]->getSiteEmail();$siteName = $dataMail[0]->getSiteName();if ($form->isSubmitted() && $form->isValid()) {$contactFormData = $form->getData();$email = (new Email())->from($contactFormData['email'])->to(new Address($siteEmail, $siteName))->subject('Message depuis '. $siteName .' : ' . $contactFormData['objet'])->html('<h4 style="color: #1758a0; font-weight: bold;">Message envoyé depuis le site ' . $siteName . '</h4>' .'<span style="color: #1758a0; font-weight: bold;">De :</span> ' . $contactFormData['prenom'] . ' ' . $contactFormData['nom'] . '<br>' .'<span style="color: #1758a0; font-weight: bold;">E-mail :</span> ' . $contactFormData['email'] . '<br>' .'<span style="color: #1758a0; font-weight: bold;">Objet : </span> ' . $contactFormData['objet'] .'<p><span style="color: #1758a0; font-weight: bold;">Message</span> : <br>' . trim(nl2br($contactFormData['message'])) . '</p>','text/plain');;$mailer->send($email);$this->addFlash('success', 'Le message a bien été envoyé !');// return $this->redirect('/contact');return $this->redirect($this->generateUrl('app_home') . '#message-success');}return $this->render('pages/home.html.twig', ['settings' => $settingRepository->findAll(),'form' => $form->createView(),'pageTitle' => 'home',]);}#[Route('/programme', name: 'app_programme')]public function programme(SettingRepository $settingRepository,OrganisateurRepository $organisateurRepository): Response{return $this->render('pages/programme.html.twig', ['settings' => $settingRepository->findAll(),'orga' => $organisateurRepository->findBy(['isEnabled' => true], [], 1),'organisateurs' => $organisateurRepository->findBy(['isEnabled' => true], [], 100, 1),'pageTitle' => 'programme',]);}#[Route('/partenaires', name: 'app_partenaires')]public function partenaires(SettingRepository $settingRepository,PartenaireRepository $partenaireRepository): Response{return $this->render('pages/partenaires.html.twig', ['settings' => $settingRepository->findAll(),'partenairesmajeurs' => $partenaireRepository->findBy(['isMajeur' => true], []),'partenairesmajobdating' => $partenaireRepository->findBy(['isJobdating' => true], []),'partenaires' => $partenaireRepository->findBy(['isEnabled' => true], ['title' => 'ASC']),'pageTitle' => 'partenaires',]);}#[Route('/offres', name: 'app_offres')]public function offres(SettingRepository $settingRepository,SecteurRepository $secteurRepository,OffreRepository $offreRepository,PaginatorInterface $paginator,Request $request,CallApiService $callApi): Response{$keyword = $request->query->get('keyword');$page = $request->query->get('page');$apiResponse = null;if ($keyword != null) {$apiResponse = $callApi->searchKeyword($request->query->get('keyword'),$page);}else {$apiResponse = $callApi->callApi($page);}$form = $this->createForm(SearchOffresPoType::class);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$keyword = $form->getData()['keyword'];$keyword = str_replace(' ', '+', $keyword);return $this->redirectToRoute('app_offres', ['keyword' => $keyword,'page' => 1]);}return $this->render('pages/offres.html.twig', ['settings' => $settingRepository->findAll(),//'formSearch' => $formSearch,//'offres' => $offresPaginated,'api' => $apiResponse,'form' => $form->createView(),'page' => $page,'keyword' => $keyword,'pageTitle' => 'offres',]);}#[Route('/offres/{slug}', name: 'app_offre_show', methods: ['GET', 'POST'])]public function show(Offre $offre,SettingRepository $settingRepository,OffreRepository $offreRepository,Request $request,EntityManagerInterface $em): Response {return $this->render('pages/offre-show.html.twig', ['offre' => $offre,'settings' => $settingRepository->findAll(),'offres' => $offreRepository->findAll(),'pageTitle' => 'offre-detail']);}#[Route('/contact', name: 'app_contact')]public function contact(SettingRepository $settingRepository,Request $request,MailerInterface $mailer,EntityManagerInterface $em): Response{// form$form = $this->createForm(ContactType::class);$form->handleRequest($request);// On recherche l'email et le nom du site dans Setting$dataMail = $settingRepository->findAll();$siteEmail = $dataMail[0]->getSiteEmail();$siteName = $dataMail[0]->getSiteName();if ($form->isSubmitted() && $form->isValid()) {$contactFormData = $form->getData();$email = (new Email())->from($contactFormData['email'])->to(new Address($siteEmail, $siteName))->subject('Message depuis '. $siteName .' : ' . $contactFormData['objet'])->html('<h4 style="color: #1758a0; font-weight: bold;">Message envoyé depuis le site ' . $siteName . '</h4>' .'<span style="color: #1758a0; font-weight: bold;">De :</span> ' . $contactFormData['prenom'] . ' ' . $contactFormData['nom'] . '<br>' .'<span style="color: #1758a0; font-weight: bold;">E-mail :</span> ' . $contactFormData['email'] . '<br>' .'<span style="color: #1758a0; font-weight: bold;">Objet : </span> ' . $contactFormData['objet'] .'<p><span style="color: #1758a0; font-weight: bold;">Message</span> : <br>' . trim(nl2br($contactFormData['message'])) . '</p>','text/plain');;$mailer->send($email);$this->addFlash('success', 'Le message a bien été envoyé !');return $this->redirect($this->generateUrl('app_contact') . '#message-success');}return $this->render('pages/contact.html.twig', ['settings' => $settingRepository->findAll(),'form' => $form->createView(),'pageTitle' => 'contact',]);}//Mentions Légales#[Route('/mentions-legales', name: 'app_mentions_legales')]public function mentionsLegales(SettingRepository $settingRepository,): Response{return $this->render('pages/mentions-legales.html.twig', ['settings' => $settingRepository->findAll(),'pageTitle' => 'Mentions-Legales']);}#[Route('/sitemap.xml', name: 'app_sitemap', defaults: ['_format', 'xml'])]public function sitemap(Request $request,SettingRepository $settingRepository,OffreRepository $offreRepository): Response{$hostname = $request->getSchemeAndHttpHost();$lastmod = date('d/m/Y');$urls = [];$urls[] = ['loc' => $this->generateUrl('app_home'), 'lastmod' => $lastmod];$urls[] = ['loc' => $this->generateUrl('app_offres'), 'lastmod' => $lastmod];// Boucles sur les offresforeach ($offreRepository->findAll() as $offre) {$urls[] = ['loc' => $this->generateUrl('app_offre_show', ['slug' => $offre->getSlug()]), 'lastmod' => $lastmod];}$urls[] = ['loc' => $this->generateUrl('app_partenaires'), 'lastmod' => $lastmod];$urls[] = ['loc' => $this->generateUrl('app_programme'), 'lastmod' => $lastmod];$urls[] = ['loc' => $this->generateUrl('app_contact'), 'lastmod' => $lastmod];// Create the XML response$response = new Response($this->renderView('sitemap/index.html.twig', ['urls' => $urls,'hostname' => $hostname,'settings' => $settingRepository->findAll()]),200);// Add headers$response->headers->set('Content-Type', 'text/xml');// Send the responsereturn $response;}}