Livrer du html au lieu du xhtml avec symfony

Je n'ai encore fait aucun site en XHTML pour diverses raisons : on doit servir le XHTML avec le type mime application/xhtml+xml. Mais le navigateur au grand E bleu ne gère tout simplement pas ce type mime. Et livrer le XHTML avec le type mime text/html revient à faire du mauvais HTML. Voilà pour la petite intro.

Lorsqu'on utilise un CMS, ou un framework, on se demande si celui-là va respecter notre façon de coder. J'ai adopté symfony et j'ai découvert avec joie que je peux continuer à faire du HTML!

Pour permettre à symfony de livrer du HTML au lieu du XHTML, il suffit de surcharger les quelques fonctions d'affichage. Il faut aussi modifier le fichier layout.php de l'application et remplacer le doctype XHTML par celui qui va bien:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Il faut aussi supprimer les tags fermants des balises contenues dans la partie head

Les fonctions d'affichages des différents tags HTML sont toutes gérées dans le helper TagHelper.php. J'ai donc récupérer ce fichier dans le répertoire lib/helper/ de symfony et je l'ai placé dans le répertoire lib/helper/ de mon application et j'ai modifié la fonction tag pour livrer du HTML au lieu du XHTML. En fait j'ai simplement supprimé le slash de fin de tag:

sortie de la commande diff:

-  return '<'.$name._tag_options($options).(($open) ? '>' : ' />');
+  return '<'.$name._tag_options($options).(($open) ? '>' : '>');

Cela fonctionne parfaitement mais cela a deux inconvénients. Il ne faut pas oublier de garder toutes les autres fonctions présentes dans ce fichier. L'autre inconvénient est que si on met à jour symfony on risque de passer à côté de modifications dans ce fichier puisqu'on l'aura surchargé.

Haut de page