Pierwsze naprawdę bezpieczne i
intuicyjne szablony dla PHP

Ponad 27% stron internetowych
ma krytyczne luki

Najczęstszą krytyczną luką w stronach internetowych jest Cross-Site Scripting (XSS). Pozwala ona atakującemu na wstawienie do strony złośliwego skryptu, który wykonuje się w przeglądarce niczego nie podejrzewającego użytkownika. Może on zmodyfikować stronę, uzyskać poufne informacje lub nawet ukraść tożsamość użytkownika.

Systemy templatkowania nie radzą sobie z obroną przed XSS. Latte jest jedynym systemem, który posiada skuteczną obronę, dzięki ucieczce kontekstowej.

Każdy, kto chce mieć dobrze zabezpieczoną stronę internetową, używa Latte.

Quiz: Czy potrafisz obronić się przed podatnością XSS?

Źródło: Acunetix Web Vulnerability Report

Przykład automatycznego uciekania zmiennej $text w kilku różnych kontekstach (można edytować górny szablon):

{var $text = "O'Neill"}
- w tekście: <span>{$text}</span>
- w atrybucie: <span title={$text}></span>
- w nienotowanym atrybucie: <span title={$text}></span>
- w JavaScript: <script>var = {$text}</script>
- w tekście: <span>O'Neill</span>
- w atrybucie: <span title='O&apos;Neill'></span>
- w nienotowanym atrybucie: <span title="O&apos;Neill"></span>
- w JavaScript: <script>var = "O'Neill"</script>

Język, który dobrze znasz

Nie żartujemy, znasz już język latte. Wiesz już jak pisać w nim wyrażenia. W rzeczywistości są one napisane dokładnie tak samo jak w PHP. Nie musisz więc zastanawiać się, jak pisać rzeczy w Latte. Nie musisz szukać w dokumentacji. Nie musisz uczyć się innego języka. Po prostu piszesz tak jak w PHP. " Więcej o składni Latte .[more-about]":/pl/syntax

Pętla

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

Warunek

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

Wyrażenia

{$product?->getDiscount()}

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

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

Latte vs Twig

Latte jest oparty na PHP, podczas gdy Twig jest oparty na Pythonie. Projektant w Latte nie musi ciągle przełączać się między dwoma różnymi konwencjami. Na przykład między for person in people szablonach a foreach $people as $person w PHP. Nie musi nawet myśleć o tym, gdzie użyć {% %}, a gdzie {{ }}, ponieważ Latte ma jeden delimiter {.. {...} {{ }}.

Spróbuj narzędzia Twig do Latte.

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

Tryb oszczędzania klawiatury, który sprawi, że będziesz podekscytowany

Użytkownicy uwielbiają tę funkcję. Nazywamy ją n:attributes. Wszelkie sparowane znaczniki, takie jak {if} ... {/if}.. {if} ... {/if} oplatające element HTML mogą być zapisane jako jego atrybut n:if. Jest to bardzo wydajna notacja. Atrybuty mogą mieć także przedrostki inner- i tag-, wtedy zachowanie dotyczy wnętrza elementu odpowiednio otwierającego i kończącego znaczniki HTML. " Więcej o n-atrybutach .[more-about]":/pl/syntax#toc-n-atributy

Używanie n:attributes:

<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>

And the Same Without Them:

{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 Pampers Developers

Edycja

Latte ma natywne wsparcie w NetBeans i doskonałą wtyczkę dla PhpStorm, która sugeruje tagi, filtry i kod PHP.

Debugowanie

Pozostań w kontakcie. Wtyczka dla Tracy informuje Cię na każdej stronie, które szablony i które zmienne są renderowane.

Szablony nowej generacji

Latte jest systemem szablonów nowej generacji – rozumie HTML. Tam gdzie inne systemy widzą tylko garść znaków, Latte widzi elementy HTML. To jest powód, dla którego posiada dwie niesamowite funkcje, takie jak context-sensitive escapingn:attributes.

Jak Blade, Twig i inne systemy widzą szablon

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

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

Jak Latte widzi szablon

<!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>

Układy i dziedziczenie

Wyrafinowane mechanizmy ponownego użycia i dziedziczenia szablonów zwiększają produktywność, ponieważ każdy szablon zawiera tylko swoją unikalną zawartość, a powtarzające się elementy i struktury są ponownie wykorzystywane.

Sandbox

Latte ma pancerny bunkier tuż pod maską. Nazywa się to trybem piaskownicy i izoluje szablony od niezaufanych źródeł, takich jak te edytowane przez samych użytkowników. Daje im ograniczony dostęp do tagów, filtrów, funkcji, metod itp. Jak to działa?

To jest naprawdę szybkie

Latte kompiluje szablon do optymalnego kodu PHP w tym samym czasie, kiedy Ty pracujesz. Jest więc tak szybki, jakbyś tworzył wyłącznie w PHP. Skompilowany kod PHP jest przejrzysty i łatwy do debugowania. Szablon jest automatycznie rekompilowany za każdym razem, gdy zmieniamy plik źródłowy.

Ponad 15 lat

Rozwijamy Latte od ponad 15 lat – i nadal to robimy! Biblioteki, które dostarczamy są więc bardzo dojrzałe, stabilne i szeroko stosowane. Ufają im liczne globalne korporacje, a wiele znaczących stron internetowych polega na nas. Kto używa i ufa Latte?

Świetna dokumentacja

Czytelnicy chwalą dokumentację za przejrzystość i kompletność. Życzymy przyjemnej lektury.

Otwarte źródło

Latte jest open source i jest całkowicie darmowy.