Templates: Generering Af Html

En template er et værktøj til at masseproducere HTML dokumenter der minder om hinanden. Templates benyttes tit i sammenhænge hvor web applikationen genererer indhold dynamisk som det bliver tilføjet til web applikationen.

I vores blog, bruges en fælles template til at definere den overordnede HTML for alle sider. Dette er smart fordi det fjerner gentagelse af de HTML elementer der findes på alle HTML sider - fx <html>, <head>, <body> osv. Samtidigt gør templates det nemmere at vedligeholde bloggen, da rettelser i præsentationen af data, foregår et fælles sted.

template.png

I templaten defineres kroge hvorpå der hænges indhold hentet fra databasen. I eksemplet ovenfor er {{post.title}} en krog hvorpå titlen fra nyheden i databasen hænges. Ud over kroge bestå en template af basale kontrolstrukturer. Kontrolstrukturer er …

Lyn kursus i template sproget Twig

Konkret er en template et HTML dokument, med nogle ekstra template konstruktioner. I eksemplet nedenfor genereres der HTML for alle posts hentet fra databasen og derefter inkluderet i templaten.

{% for post in posts %}
    <div>
        <h3>
            <a href="{{ post.url }}">{{ post.title }}</a>
        </h3>
        {% if user %}
            <a href="{{ post.edit_url}}">[rediger]</a>
        {% endif %}
        <div>{{post.body}}</div>
    </div>
{% endfor %}

Template konstruktionerne er ting der er indeholdt i {{ }} og {% %}. {% %} definerer blokke der gør noget, fx gentag for all posts. {{ }} angiver en variable der indsætter en værdi i templaten.

{% if user %} og {% endif %}
Denne blok opretter et link til at redigere et post hvis og kun hvis brugeren er logget ind. user er den bruger der er logget ind, hvis der ikke findes nogle bruger skippes den del af templaten.

{% for post in posts %} og {% endfor %}
Disse to konstruktioner hører sammen. De definerer et sted hvor man gør noget for hvert blog post givet til templaten i form af posts. Konkret oprettes der i HTML en overskrift, et link til at redigere

Eksempel

I vores blog gemmes indhold i en database - dvs. data er gemt i et slags regneark, hvor hver søjle er navngivet og indeholder data i et bestemt format. Posts i bloggen kunne fx se ud på følgende måde:

Posts

id created_at updated_at title body is_published user_id user
1 2011-08-22 17:28:15 2011-08-22 17:28:15 Iftek bla bla bla 1 1 user 1
2 2011-08-23 23:10:40 2011-08-23 23:10:40 Mit andet indlaeg woop woop 0 1 user 1

Når en browser tilgår en URL i bloggen fx http://skyen.iftek.dk/~jakob/blog/ hentes posts ud af databasen og vidergives til templaten.

for, if, block, extends

{% %} vs.

Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License