HomeController
extends AbstractController
in package
Contrôleur des pages publiques du site vitrine B-Card.
Il regroupe les pages accessibles sans authentification : accueil, catalogue des modèles de cartes NFC, fiche produit, pages de présentation des fonctionnalités, tarifs et offre entreprise, formulaire de contact ainsi que les pages légales. Les contenus dynamiques proviennent des entités Card, Plan et Settings (destinataires du formulaire de contact, textes légaux). Aucun préfixe de route ni contrôle d'accès n'est déclaré au niveau de la classe.
Table of Contents
Methods
- contact() : Response
- Affiche le formulaire de contact et traite son envoi.
- enterpriseOffer() : Response
- Affiche la page de présentation de l'offre destinée aux entreprises.
- features() : Response
- Affiche la page de présentation des possibilités de personnalisation des cartes.
- featuresAnalytics() : Response
- Affiche la page de présentation des statistiques et du suivi d'audience.
- featuresEco() : Response
- Affiche la page de présentation de l'argument écologique du produit.
- featuresNFC() : Response
- Affiche la page de présentation de la fonctionnalité NFC.
- howItWork() : Response
- Affiche la page explicative « Comment ça marche ».
- index() : Response
- Affiche la page d'accueil du site.
- politiqueAndConfidentialite() : Response
- Affiche la page de politique de confidentialité.
- showProductNfc() : Response
- Affiche le catalogue des modèles de cartes NFC proposés à la vente.
- tarifs() : Response
- Affiche la grille tarifaire publique.
- termsAndConditionPage() : Response
- Affiche la page des conditions générales d'utilisation et de vente.
- ViewRetailForProduct() : Response
- Affiche la fiche détaillée d'un modèle de carte NFC.
Methods
contact()
Affiche le formulaire de contact et traite son envoi.
public
contact(Request $request, MailerService $mailerService, EntityManagerInterface $entityManager) : Response
En GET, rend simplement la page. En POST, lit les champs bruts de la requête (firstname, lastname,
phone, email, message, object) sans passer par un formulaire Symfony ni validation explicite,
puis détermine les destinataires : la liste configurée dans l'entité Settings
(premier enregistrement trouvé) et, à défaut, l'adresse d'expédition par défaut du
MailerService. Le message est envoyé à tous les destinataires avec l'email du
visiteur en adresse de réponse, puis un message flash de succès est ajouté. Aucun échec d'envoi n'est
intercepté ici : une erreur de transport remonte à l'appelant.
Route : /contact-page (GET, POST), nom app_contact.
Parameters
- $request : Request
-
Requête HTTP contenant les champs du formulaire en POST.
- $mailerService : MailerService
-
Service d'envoi d'emails (envoi multiple, adresse par défaut).
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités utilisé pour lire les
Settings.
Tags
Attributes
- #[Route]
- '/contact-page'
- $name: 'app_contact'
Return values
Response —Page de contact rendue (home/contact.html.twig), dans tous les cas.
enterpriseOffer()
Affiche la page de présentation de l'offre destinée aux entreprises.
public
enterpriseOffer(PlanRepository $planRepository) : Response
Charge uniquement les plans d'abonnement actifs (isActive à true), triés par sortOrder croissant,
afin de respecter l'ordre d'affichage défini en back-office.
Route : /offre-entreprise (GET), nom app_enterprise_offer.
Parameters
- $planRepository : PlanRepository
-
Repository utilisé pour charger les plans actifs.
Attributes
- #[Route]
- '/offre-entreprise'
- $name: 'app_enterprise_offer'
Return values
Response —Page rendue (home/enterprise-offer.html.twig) avec la liste des plans.
features()
Affiche la page de présentation des possibilités de personnalisation des cartes.
public
features() : Response
Page statique, sans variable transmise au template. À noter : le nom de la méthode (features) est
plus générique que son contenu, qui ne concerne que la personnalisation.
Route : /fonctionnalités/customization (GET), nom app_features_customisations.
Attributes
- #[Route]
- '/fonctionnalités/customization'
- $name: 'app_features_customisations'
Return values
Response —Page rendue (features/customization.html.twig).
featuresAnalytics()
Affiche la page de présentation des statistiques et du suivi d'audience.
public
featuresAnalytics() : Response
Page statique, sans variable transmise au template.
Route : /fonctionnalités/analytics (GET), nom app_features_analytics.
Attributes
- #[Route]
- '/fonctionnalités/analytics'
- $name: 'app_features_analytics'
Return values
Response —Page rendue (features/analytics.html.twig).
featuresEco()
Affiche la page de présentation de l'argument écologique du produit.
public
featuresEco() : Response
Page statique, sans variable transmise au template.
Route : /fonctionnalités/eco (GET), nom app_features_eco.
Attributes
- #[Route]
- '/fonctionnalités/eco'
- $name: 'app_features_eco'
Return values
Response —Page rendue (features/eco.html.twig).
featuresNFC()
Affiche la page de présentation de la fonctionnalité NFC.
public
featuresNFC() : Response
Page statique, sans variable transmise au template.
Route : /fonctionnalités/nfc (GET), nom app_features_nfc.
Attributes
- #[Route]
- '/fonctionnalités/nfc'
- $name: 'app_features_nfc'
Return values
Response —Page rendue (features/nfc.html.twig).
howItWork()
Affiche la page explicative « Comment ça marche ».
public
howItWork() : Response
Page purement statique : aucun paramètre n'est transmis au template.
Route : /comment-ca-marche (GET), nom app_how_it_work.
Attributes
- #[Route]
- '/comment-ca-marche'
- $name: 'app_how_it_work'
Return values
Response —Page rendue (home/how-it-work.html.twig).
index()
Affiche la page d'accueil du site.
public
index() : Response
Ne fait aucun accès aux données : rend simplement le template d'accueil en lui passant
la variable controller_name.
Route : / (GET), nom app_home.
Attributes
- #[Route]
- '/'
- $name: 'app_home'
Return values
Response —Page d'accueil rendue (home/index.html.twig).
politiqueAndConfidentialite()
Affiche la page de politique de confidentialité.
public
politiqueAndConfidentialite(EntityManagerInterface $entityManager) : Response
Le contenu est éditorialisé en back-office : la méthode récupère le premier enregistrement de l'entité
Settings et le transmet au template. Si aucun paramétrage n'existe, settings
vaut null et c'est au template de gérer ce cas.
Route : /politique-et-confidentialité (GET), nom app_politique_page.
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités utilisé pour lire les
Settings.
Attributes
- #[Route]
- '/politique-et-confidentialité'
- $name: 'app_politique_page'
Return values
Response —Page rendue (home/politique-and-confidentiality.html.twig).
showProductNfc()
Affiche le catalogue des modèles de cartes NFC proposés à la vente.
public
showProductNfc(CardRepository $cardRepository) : Response
Ne remonte que les cartes non masquées (isHide à false), afin d'exclure du catalogue public
les modèles désactivés en back-office.
Route : /modeles-de-cartes (GET), nom app_product_nfc.
Parameters
- $cardRepository : CardRepository
-
Repository utilisé pour charger les modèles de cartes visibles.
Attributes
- #[Route]
- '/modeles-de-cartes'
- $name: 'app_product_nfc'
Return values
Response —Page catalogue rendue (home/product.html.twig) avec la liste des cartes.
tarifs()
Affiche la grille tarifaire publique.
public
tarifs(PlanRepository $planRepository) : Response
Utilise la même sélection que HomeController::enterpriseOffer() : plans actifs uniquement,
triés par sortOrder croissant, mais avec un template différent.
Route : /tarifs (GET), nom app_tarifs.
Parameters
- $planRepository : PlanRepository
-
Repository utilisé pour charger les plans actifs.
Attributes
- #[Route]
- '/tarifs'
- $name: 'app_tarifs'
Return values
Response —Page rendue (home/tarifs.html.twig) avec la liste des plans.
termsAndConditionPage()
Affiche la page des conditions générales d'utilisation et de vente.
public
termsAndConditionPage(EntityManagerInterface $entityManager) : Response
Fonctionne comme HomeController::politiqueAndConfidentialite() : le premier enregistrement de l'entité Settings est chargé et transmis au template, qui y puise le texte légal.
Route : /terme-et-condition (GET), nom app_term_condition.
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités utilisé pour lire les
Settings.
Attributes
- #[Route]
- '/terme-et-condition'
- $name: 'app_term_condition'
Return values
Response —Page rendue (home/terms-and-conditions.html.twig).
ViewRetailForProduct()
Affiche la fiche détaillée d'un modèle de carte NFC.
public
ViewRetailForProduct(Card $card, Request $request, CardRepository $cardRepository) : Response
La carte est résolue automatiquement depuis le paramètre de route {id}. La méthode charge également
les produits similaires, c'est-à-dire toutes les cartes partageant le même typeProduct (la carte
courante n'est pas exclue de cette liste), et calcule la taille maximale autorisée pour un fichier de
design en convertissant le paramètre applicatif design_file_max_bytes en mégaoctets arrondis au
supérieur, valeur exploitée par le formulaire d'upload de la page.
Route : /produit-nfc/{id} (GET), nom app_product_retail.
Parameters
- $card : Card
-
Carte ciblée, résolue depuis l'identifiant présent dans l'URL.
- $request : Request
-
Requête HTTP courante (injectée mais non utilisée par la méthode).
- $cardRepository : CardRepository
-
Repository utilisé pour récupérer les produits similaires.
Attributes
- #[Route]
- '/produit-nfc/{id}'
- $name: 'app_product_retail'
Return values
Response —Fiche produit rendue (home/product-retail.html.twig).