Die ersten wirklich sicheren und
intuitiven Templates für PHP

Über 27% der Websites
haben kritische Sicherheitslücken

Die häufigste kritische Schwachstelle auf Websites ist Cross-Site Scripting (XSS). Es ermöglicht einem Angreifer, ein bösartiges Skript in eine Seite einzuschleusen, das im Browser eines ahnungslosen Benutzers ausgeführt wird. Es kann die Seite verändern, sensible Informationen abrufen oder sogar die Identität des Benutzers stehlen.

Template-Systeme versagen bei der Abwehr von XSS. Latte ist das einzige System mit einer effektiven Abwehr, dank kontextsensitivem Escaping.

Wer eine gut gesicherte Website haben möchte, verwendet Latte.

Quiz: Können Sie sich vor der XSS-Schwachstelle schützen?

Datenquelle: Acunetix Web Vulnerability Report

Beispiel für automatisches Escaping der Variable $text in verschiedenen Kontexten (Sie können das obere Template bearbeiten):

{var $text = "O'Neill"}
- im Text: <span>{$text}</span>
- im Attribut: <span title={$text}></span>
- im Attribut ohne Anführungszeichen: <span title={$text}></span>
- in JavaScript: <script>var = {$text}</script>
- im Text: <span>O'Neill</span>
- im Attribut: <span title='O&apos;Neill'></span>
- im Attribut ohne Anführungszeichen: <span title="O&apos;Neill"></span>
- in JavaScript: <script>var = "O'Neill"</script>

Eine Sprache, die Sie gut kennen

Wir übertreiben nicht. Sie kennen die Latte-Sprache bereits. Sie wissen bereits, wie man Ausdrücke darin schreibt. Sie werden nämlich genauso geschrieben wie in PHP. Sie müssen also nicht darüber nachdenken, wie etwas in Latte geschrieben wird. Sie müssen nicht in der Dokumentation suchen. Sie müssen keine weitere Sprache lernen. Sie schreiben einfach wie in PHP. Mehr über die Latte-Syntax

Schleife

<ul>
    {foreach $users as $user}
        <li>{$user->name}</li>
    {/foreach}
</ul>

Bedingung

{if $post->status === Status::Published}
    Read post
{elseif count($posts) > 0}
    See other posts
{/if}

Ausdrücke

{$product?->getDiscount()}

{$foo[0] + strlen($bar[Bar::Const])}

{array_filter($nums, fn($n) => $n < 100)}

Latte vs Twig

Latte basiert auf PHP, während Twig auf Python basiert. Ein Designer in Latte muss nicht ständig zwischen zwei verschiedenen Konventionen wechseln. Zum Beispiel zwischen for person in people in Templates und foreach $people as $person in PHP. Er muss auch nicht darüber nachdenken, wo {% %} und wo {{ }} verwendet werden soll, da Latte nur einen Delimiter {...} hat.

Probieren Sie das Tool zur Konvertierung von Twig-Templates nach Latte aus.

<ul>
    {foreach $foo->items as $item}
        <li>{$item->name}</li>
    {/foreach}
</ul>
<ul>
    {% for item in foo.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
</ul>

Ein Sparmodus, der Sie begeistern wird

Benutzer lieben dieses Feature. Wir nennen es n:Attribute. Jedes gepaarte Tag, wie z.B. {if} … {/if}, das ein HTML-Element umschließt, kann als dessen Attribut n:if geschrieben werden. Dadurch erzielen Sie eine sehr sparsame Schreibweise. Attribute können auch die Präfixe inner- und tag- haben, dann bezieht sich das Verhalten auf das Innere des Elements bzw. auf die öffnenden und schließenden HTML-Tags. Mehr über n-Attribute

Mit n:Attributen:

<ul n:if="count($menu) > 1" class="menu">
    <li n:foreach="$menu as $item">
        <a n:tag-if="$item->href" href={$item->href}>
            {$item->caption}
        </a>
    </li>
</ul>

Dasselbe ohne sie:

{if count($menu) > 1}
    <ul class="menu">
        {foreach $menu as $item}
            <li>
                {if $item->href}<a href={$item->href}>{/if}
                    {$item->caption}
                {if $item->href}</a>{/if}
            </li>
        {/foreach}
    </ul>
{/if}

Latte verwöhnt Entwickler

Bearbeitung

Latte hat native Unterstützung in NetBeans und ein ausgezeichnetes Plugin für PhpStorm, das Tags, Filter und PHP-Code vorschlägt.

Debugging

Bleiben Sie immer auf dem Laufenden. Das Plugin für Tracy informiert auf jeder Seite darüber, welche Templates und welche Variablen gerendert werden.

Template-System der nächsten Generation

Latte ist ein Template-System der nächsten Generation – es versteht HTML. Wo andere Systeme nur eine Ansammlung von Zeichen sehen, sieht Latte HTML-Elemente. Deshalb verfügt es über zwei erstaunliche Funktionen wie kontextsensitives Escaping und n:Attribute.

Wie Blade, Twig und andere Systeme das Template sehen

░░░░░░░░░░░░░░░
░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
    ░░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░
            @foreach ($navigation as $item)
                ░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
            @endforeach
        ░░░░░

        ░░░░░░░░
            ░░░░░░░░░░░░{{ $appName }}░
        ░░░░░░░░░
    ░░░░░░░
░░░░░░░

Wie Latte das Template sieht

<!DOCTYPE html>
<html>
    <head>
        <title>It's all about context</title>
        <meta name="description" content={include description}>
    </head>
    <body>
        <ul class="navigation">
            {foreach  $navigation as $item}
                <li><a href={$item->link}>{$item->title}</a></li>
            {/foreach}
        </ul>

        <script>
            var appName = {$appName};
        </script>
    </body>
</html>

Layouts und Vererbung

Ausgefeilte Mechanismen zur Wiederverwendung und Vererbung von Templates steigern Ihre Produktivität, da jedes Template nur seinen einzigartigen Inhalt enthält und wiederholte Elemente und Strukturen wiederverwendet werden.

Sandbox

Latte hat einen gepanzerten Bunker direkt unter der Haube. Er wird Sandbox-Modus genannt und isoliert Templates aus nicht vertrauenswürdigen Quellen, die beispielsweise von Benutzern selbst bearbeitet werden. Er gibt ihnen eingeschränkten Zugriff auf Tags, Filter, Funktionen, Methoden usw. Wie funktioniert das?

Schnell wie der Wind

Latte kompiliert Templates zur Laufzeit in optimalen PHP-Code. Es ist also genauso schnell, als würden Sie reines PHP schreiben. Der kompilierte Code ist übersichtlich und Sie können ihn leicht debuggen. Bei jeder Änderung des Templates wird es natürlich neu kompiliert.

Über 18 Jahre Entwicklung

Wir entwickeln Latte seit über 18 Jahren – und die Zahl wächst weiter! Die von uns bereitgestellten Bibliotheken sind daher sehr ausgereift, stabil und weit verbreitet. Ihnen vertrauen eine Reihe globaler Unternehmen und sie treiben viele bedeutende Websites an. Wer verwendet Latte und vertraut darauf?

Großartige Dokumentation

Latte ist das einzige Template-System, das seine gesamte Dokumentation in tschechischer Sprache hat. Leser loben sie für ihre Verständlichkeit und Aktualität. Wir wünschen Ihnen eine angenehme Lektüre.

Open Source

Latte ist Open Source und Sie können es völlig kostenlos nutzen.