Templating Twig
Syntaxe
Exemples de base :
{{ foo.bar }}
variable{% set foo = 'foo' %}
affectation de variable{{ name|striptags|title }}
filtres{% for item in items %}...{% endfor %}
boucle sur des élements- le reste sur la documentation officielle
Les templates
Si vous voulez utiliser des templates twig non accessibles depuis le dossier public, vous devez utiliser un
dossier de templates à part dans la config du site via le paramètre path_templates
.
Ce dossier a comme nom de namespace twig templates
.
Si vous n'utilisez pas de namespace, twig cherchera les fichiers dans le dossier path_public
Exemple d'héritage de template : {% extends "@templates/base.twig" %}
Fourni avec ce projet de site
Variables
description | exemple | résultat | |
---|---|---|---|
app |
variable du conteneur de services | ||
app.counter |
service qui gère le calcul d'un pseudo nombre de visites uniques par IP | {{ app.counter }} |
5 |
app.db |
objet de db qui permet d'accéder à toutes les tables yaml | {{ app.db.table('persons').get(10).name }} |
Lindon |
{{ app.db.table('persons')|length }} |
100 | ||
app.logger |
pour logger des choses | {{ app.logger.info('Hello World !') }} |
|
app.request |
objet ServerRequestInterface de la PSR-7 HTTP message interfaces |
{{ app.request.uri.path }} |
/pages/templating |
{{ app.request.uri }} |
https://simplesite.arnapou.net/pages/templating | ||
app.router |
objet HttpRouteHandler de arnapou/psr-http |
{{ app.router.generateUrl('static_page', { path: 'pages/templating' }) }} |
/pages/templating |
{{ app.router.generateUrl('static_dir', { path: 'pages' }) }} |
/pages/ | ||
app.config |
config du site | {{ app.config.name }} |
Arnapou simple site |
{{ app.config.log_max_files }} |
7 |
Fonctions
description | exemple | résultat | |
---|---|---|---|
asset |
calcule le chemin d'un asset | {{ asset('../assets/twig.png') }} |
/../assets/twig.png |
path |
calcule le chemin d'un lien | {{ path('static_dir', { path: 'pages' }) }} |
/pages/ |
{{ path('static_page', { path: 'pages/templating' }) }} |
/pages/templating | ||
path_dir |
raccourci de path('static_dir', ...) |
{{ path_dir('pages') }} |
/pages/ |
path_page |
raccourci de path('static_page', ...) |
{{ path_page('pages/templating') }} |
/pages/templating |
thumbnail |
transforme le chemin d'une image vers celui de sa miniature | {{ thumbnail('../assets/twig.png', 50) }} |
/../assets/twig.50.png |
Filtres
description | exemple | résultat | |
---|---|---|---|
markdown_to_html |
convertit du markdown en html |
|
|
minify_html |
retire les espaces html superflus |
|
|
path_dir |
url d'un chemin de dossier | {{ 'pages'|path_dir }} |
/pages/ |
path_page |
url d'un chemin de page | {{ 'pages/templating'|path_page }} |
/pages/templating |
repeat |
répète un texte | {{ 'Hello '|repeat(3) }} |
Hello Hello Hello |
slugify |
simplifie un texte en transformant les caractères (utile par exemple pour des ancres) | {{ 'Wôrķšƥáçè ~~sèťtïñğš~~ 5€'|slugify }} |
workspace-settings-5eur |
thumbnail |
transforme le chemin d'une image vers celui de sa miniature | {{ '../assets/twig.png'|thumbnail(50) }} |
/../assets/twig.50.png |