Aller au contenu

Twig

phil/markup-bundle
FiltreArgumentsDonne
markup_htmlle format (default_format par défaut), le niveau (default_level par défaut)la source compilée et purifiée
markup_purifyle niveau (default_level par défaut)du HTML stocké, ou le HTML d'un MarkedUpText, purifié de nouveau
markup_ujole format, le niveau, avec les mêmes valeurs par défautle JSON UJO de la source
{{ comment.source|markup_html('text', 'basic') }}
{{ message.source|markup_html('bbcode', 'forum') }}
{{ article.body|markup_purify('all') }}
<div data-blocks="{{ draft.source|markup_ujo(draft.format.value) }}"></div>

markup_html et markup_purify sont sûrs pour le HTML : Twig n'échappe pas ce qu'ils donnent. markup_ujo donne du JSON, que Twig échappe comme tout texte, pour un attribut ou un script. Un null donne une chaîne vide, ou un document sans blocs pour markup_ujo.

Le niveau demandé est abaissé au plafond du format que fixe la configuration dans levels : avec bbcode: forum, markup_html('bbcode', 'all') purifie à forum. markup_purify applique le plafond du format d'un MarkedUpText, activé ou non, et aucun plafond à du HTML simple, dont il ne connaît pas le format. Un format non activé lance UnavailableFormat, un niveau inconnu une ValueError, une source UJO invalide InvalidSource : voir Exceptions.

Ce que coûte un rendu

markup_html compile la source et purifie le résultat à chaque rendu, et ne met rien en cache : environ 4 ms pour dix paragraphes de Markdown, de sorte qu'un fil de 50 messages passe quelque 200 ms dans le filtre. markup_purify ne fait que purifier, soit environ sept fois moins pour le même message Markdown. markup_ujo lit la source et écrit son JSON, soit environ les deux tiers de markup_html. Une page qui liste de nombreux textes compile chacun une seule fois, quand il est écrit : stockez sur l'entité le MarkedUpText que donne Markup::text() (un objet intégrable qui réunit sa source, son format et son HTML), et affichez-le avec markup_purify, qui le purifie de nouveau au niveau demandé, de sorte qu'une politique plus stricte s'applique encore à ce qui a été stocké. Gardez markup_html pour un aperçu, ou un texte affiché une seule fois, et markup_ujo pour le moment où un texte est ouvert dans un éditeur par blocs.