Arnapou simple site

Templating Twig

Syntaxe

Exemples de base :

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
{% apply markdown_to_html %}
Title
=====

Hello!
{% endapply %}
<h1>Title</h1>

<p>Hello!</p>
minify_html retire les espaces html superflus
{% apply minify_html %}
    <p>
        Hello <b>World !</b>
    </p>
{% endapply %}
<p>Hello <b>World !</b></p>
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