Bonjour
Mes entetes de page (title, description...) ne s'affichent pas, parceque j'utilise les caractères accentés.
Sachant que j'utilise l'endodage utf8, comment remedier à ce type de problème.
Merci d'avance.
Bonjour
Mes entetes de page (title, description...) ne s'affichent pas, parceque j'utilise les caractères accentés.
Sachant que j'utilise l'endodage utf8, comment remedier à ce type de problème.
Merci d'avance.
peux tu préciser? par exemple la page actuelle (developpez) a des accents (répondre au sujet) dans title et aucun soucis.
As tu préciser l'encodage html de la page?
essaye de placer un url decode en php dans la sortie de ton title ça résout souvent bien des problèmes.
Les pages du site s'affichent bien, parcontre les url donnent ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part /1/Mort+du+policier+%C3%A9cras%C3%A9+
Les caractères spéciaux doivent être encodés lorsqu'ils font partie d'une URL. Certains navigateurs affiche les bons caractères dans l'URL mais ce n'est qu'une retranscription lisible pour l'internaute.
Si tu ne souhaites pas avoir ces caractères dans l'URL tu pourrais nettoyer tes titres de pages ou les exculant.
Voici une de mes ptites fonctions perso :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function niceUrl($uncleaned_url){ return preg_replace( array("([\40])" , "([^a-zA-Z0-9-])", "(-{2,})"), array('-', '', '-'), trim($uncleaned_url) ); }
une autre possibilité consiste à utiliser l'objet slug dans symfony, entièrement intégré a l'ORM doctrine, il va te générer un champ unique pour chaque enregistrement garanti sans accentué a partir du ou des champs que tu souhaites y indiquer.
Ensuite, utilise les routes de symfony pour indiquer que le champ de liaison est le slug et non pas l'Id.
Enfin, il te suffi d'utiliser une des nombreuses fonctions qui construisent un lien avec le nom du lien et l'objet à mettre en lien pour que l'url avec les données en slug soit automatiquement utilisée.
Et si tu veux changer le format des slug, tu n'as pas une ligne de code à modifier dans ton application, (sauf peut-être celles qui génère un slug très personnalisé si tu choisissais cette possibilité, très rarement utilisée)
Regarde sur le site web de symfony, dans le tuto Jobeet Job, tous y est clairement expliqué.
Et, conseil perso, évite les accentués dans les liens internet.
Le seul soucis c'est que j'ai utilisé la class:
et que le lien création de blog, se transforme en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 static public function slugify($text) { // replace all non letters or digits by - $text = preg_replace('/\W+/', '-', $text); // trim and lowercase $text = strtolower(trim($text, '-')); return $text; }
, les accents sont mal interprétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cra-ation-de-blog
voici un extrait du fichier routing.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 pages_show: url: /:id/:title class: sfDoctrineRoute options: { model: Pages, type: object } param: { module: pages, action: show } requirements: sf_method: [get]
Imaginons que tu veuilles gérer des clients et donner accès à leur nom d'une manière plus top qu'un Id.
Tu vas créer une table clients dans ton modèle :
Ce qui va créer, en plus des champs indiqués explicitement dans le modèle, un champ Id (integer, index unique, auto incrément) et un champ slug (string, undex unique, basé sur nom et ville)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 client: actAs: Sluggable: unique: true fields: [ nom, ville ] canUpdate: true columns: nom: string adresse: string ville: string remarque: string ...
Dans ton route.yml
Pour créer le lien tu utilises
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 client_show: url: client/:slug class: sfDoctrineRoute options: model: Client type: object params: module: client action: show
où '$client' est l'objet Doctrine qui représente le client pour lequel on souhaite un lien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part link_to('@client_show', $client)
C'est un exemple adapté qui ne provient pas de copie de code existant chez moi, il est donc prévu plus comme une idée générale que comme du code utilisable directement.
J'espère que cela va pouvoir t'aider
Partager