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.compteur service qui gère le calcul d'un pseudo nombre de visites uniques par IP {{ app.compteur }} 106
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 Request de symfony HttpFoundation {{ app.request.pathinfo }} /pages/templating
{{ app.request.basepath }}
{{ app.request.uri }} https://simplesite.arnapou.net/pages/templating
app.session objet Session de symfony HttpFoundation {{ app.session.set('test', 42) }}
{{ app.session.get('test') }} 42
app.urlgenerator objet UrlGenerator de symfony Routing {{ app.urlgenerator.generate('static_page', { path: 'pages/templating' }) }} /pages/templating
{{ app.urlgenerator.generate('static_dir', { path: 'pages' }) }} /pages/
app.config config du site {{ app.config.name }} Arnapou simple site
{{ app.config.log_max_files }} 14

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
(équivalent plus simple que app.urlgenerator)
{{ 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
thumbnail transforme le chemin d'une image vers celui de sa miniature {{ '../assets/twig.png'|thumbnail(50) }} /../assets/twig.50.png
emojis affiche des emojis pour certains textes {{ ':)'|emojis }} 😊
à utiliser plutôt sur des gros textes
{% apply emojis %}
    :D    :d     :)    :-)    :s
    :S    :(     :-(   :p     :P
    :o    :O     :B    :|     :/
    ;(    ;-(    ;)    ;-)    :!:
    :?:   :lol:  ^^    ==>    =D
    oO    Oo     o_O   ^(     (?)
    ^)    :fear:
{% endapply %}
    😄    😄     😊    😊    😕
    😕    😞     😞   😁     😁
    😮    😮     😎    😐     😔
    😭    😭    😉    😉    ❗
    ❓   😆  😆    🡆    😃
    😲    😲     😲   😈     ❓
    😈    😱