SeoService
in package
Construit les métadonnées SEO et de partage social des pages.
Le service maintient, pour la durée d'une requête, un jeu de métadonnées initialisé avec les valeurs par défaut de BCard (titre, description, mots-clés, image Open Graph, carte Twitter). Les setters, chaînables, permettent à un contrôleur de surcharger ces valeurs avant que le gabarit n'appelle self::getMetadata() ou self::generateMetaTags(). Il s'appuie sur la requête courante et sur le générateur d'URL pour résoudre l'URL canonique et convertir les chemins d'image en URL absolues. Attention : le service étant partagé, les surcharges appliquées persistent pour toute la durée de la requête.
Table of Contents
Properties
- $metadata : array<string, string|null>
- Métadonnées courantes de la page, préremplies avec les valeurs par défaut du site.
- $requestStack : RequestStack
- $urlGenerator : UrlGeneratorInterface
Methods
- __construct() : mixed
- generateMetaTags() : string
- Assemble le bloc HTML complet des balises `<title>` et `<meta>`.
- getMetadata() : array<string, string|null>
- Retourne l'ensemble des métadonnées courantes.
- setDescription() : self
- Définit la description de la page.
- setKeywords() : self
- Remplace la liste des mots-clés de la page.
- setOgImage() : self
- Définit l'image de partage social.
- setOgType() : self
- Définit le type Open Graph de la page.
- setOgUrl() : self
- Définit l'URL canonique déclarée dans les métadonnées Open Graph.
- setTitle() : self
- Définit le titre de la page.
- getAbsoluteUrl() : string
- Convertit un chemin de ressource en URL absolue.
- getCurrentUrl() : string
- Détermine l'URL de la page en cours.
Properties
$metadata
Métadonnées courantes de la page, préremplies avec les valeurs par défaut du site.
private
array<string, string|null>
$metadata
= ['title' => 'BCard - Cartes de visite digitales professionnelles', 'description' => 'Créez et partagez vos cartes de visite digitales professionnelles. Solution moderne pour le networking et la visibilité en ligne.', 'keywords' => 'bcard, card, binn, netorworking, djelicard, carte de visite, NFC, connectée, professionnelle, carte de visite digitale, professionnel, profesionnal, numérique, QR code, partage contact', 'og_title' => 'BCard - Cartes de visite digitales', 'og_description' => 'Créez et partagez vos cartes de visite digitales professionnelles', 'og_image' => '/assets/new_design/image/bcard.png', 'og_url' => null, 'og_type' => 'website', 'twitter_card' => 'summary_large_image', 'twitter_site' => '@bcard_app']
La clé og_url vaut null tant qu'elle n'a pas été explicitement définie ; elle est
alors résolue à la volée depuis l'URL courante lors de la première lecture.
$requestStack
private
RequestStack
$requestStack
$urlGenerator
private
UrlGeneratorInterface
$urlGenerator
Methods
__construct()
public
__construct(RequestStack $requestStack, UrlGeneratorInterface $urlGenerator) : mixed
Parameters
- $requestStack : RequestStack
-
Pile de requêtes, utilisée pour lire l'URI courante.
- $urlGenerator : UrlGeneratorInterface
-
Générateur d'URL, utilisé comme repli et pour absolutiser les chemins d'image via la route
app_home.
generateMetaTags()
Assemble le bloc HTML complet des balises `<title>` et `<meta>`.
public
generateMetaTags() : string
Produit, dans l'ordre : les balises de base (titre, description, mots-clés, robots
en index, follow), les propriétés Open Graph — dont l'image absolutisée par
self::getAbsoluteUrl() et un og:site_name fixé à « BCard » —, les balises de
carte Twitter réutilisant le titre et la description Open Graph, puis des balises
complémentaires codées en dur (author, language à fr, revisit-after). Toutes
les valeurs sont échappées par htmlspecialchars(). Le résultat contenant du HTML
brut, il doit être rendu sans double échappement (filtre |raw côté Twig).
Return values
string —Balises HTML séparées par des sauts de ligne.
getMetadata()
Retourne l'ensemble des métadonnées courantes.
public
getMetadata() : array<string, string|null>
Résout paresseusement og_url depuis l'URL courante si elle n'a pas encore été
définie, et mémorise cette résolution dans l'état interne du service.
Return values
array<string, string|null> —Métadonnées prêtes à être exploitées par un gabarit.
setDescription()
Définit la description de la page.
public
setDescription(string $description) : self
La valeur est appliquée simultanément à la balise meta description et à la
description Open Graph, également reprise par la carte Twitter.
Parameters
- $description : string
-
Description de la page.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
setKeywords()
Remplace la liste des mots-clés de la page.
public
setKeywords(string $keywords) : self
Écrase intégralement la liste par défaut ; les mots-clés génériques du site ne sont pas conservés.
Parameters
- $keywords : string
-
Mots-clés séparés par des virgules.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
setOgImage()
Définit l'image de partage social.
public
setOgImage(string $imagePath) : self
Le chemin est stocké tel quel ; sa conversion en URL absolue n'intervient qu'au
moment du rendu, dans self::generateMetaTags(). L'image alimente à la fois
og:image et twitter:image.
Parameters
- $imagePath : string
-
Chemin relatif à la racine du site ou URL absolue commençant par
http.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
setOgType()
Définit le type Open Graph de la page.
public
setOgType(string $type) : self
La valeur n'est pas validée par rapport au vocabulaire Open Graph ; elle vaut
website par défaut.
Parameters
- $type : string
-
Type Open Graph, par exemple
website,articleouprofile.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
setOgUrl()
Définit l'URL canonique déclarée dans les métadonnées Open Graph.
public
setOgUrl([string|null $url = null ]) : self
Lorsque aucune URL n'est fournie, l'URI de la requête courante est utilisée — ou,
en l'absence de requête (contexte console), l'URL absolue de la route app_home.
Parameters
- $url : string|null = null
-
URL à déclarer, ou
nullpour reprendre l'URL courante.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
setTitle()
Définit le titre de la page.
public
setTitle(string $title) : self
Le titre HTML est suffixé par « - BCard » alors que le titre Open Graph reçoit la valeur brute, sans suffixe.
Parameters
- $title : string
-
Titre de la page, sans le nom du site.
Return values
self —L'instance courante, pour permettre le chaînage des appels.
getAbsoluteUrl()
Convertit un chemin de ressource en URL absolue.
private
getAbsoluteUrl(string $path) : string
Un chemin commençant déjà par http est retourné inchangé — ce test couvre donc
aussi bien http:// que https://. Sinon, le chemin est concaténé à l'URL absolue
de la route app_home, les barres obliques surnuméraires étant élaguées de part et
d'autre pour éviter les doubles séparateurs.
Parameters
- $path : string
-
Chemin relatif à la racine du site, ou URL déjà absolue.
Return values
string —URL absolue exploitable par les réseaux sociaux.
getCurrentUrl()
Détermine l'URL de la page en cours.
private
getCurrentUrl() : string
Retourne l'URI complète de la requête courante, chaîne de requête comprise. En
l'absence de requête — exécution en ligne de commande, par exemple — la méthode se
rabat sur l'URL absolue de la route app_home.
Return values
string —URL absolue de la page courante ou de la page d'accueil.