Първият наистина сигурен и
интуитивни шаблони за PHP

Над 27% от уебсайтовете
имат критични уязвимости

Най-често срещаната критична уязвимост в уебсайтовете е Cross-Site Scripting (XSS). Тя позволява на нападателя да вмъкне зловреден скрипт в страница, който се изпълнява в браузъра на нищо неподозиращ потребител. Той може да модифицира страницата, да получи чувствителна информация или дори да открадне самоличността на потребителя.

Системите за шаблониране не успяват да се защитят от XSS. Latte е единствената система с ефективна защита, благодарение на контекстно-чувствителното избягване.

Всеки, който иска да има добре защитен уебсайт, използва Latte.

Викторината: Можете ли да се защитите от уязвимостта XSS?

Източник: Acunetix Web Vulnerability Report

Пример за автоматично ескапиране на променливата $text в няколко различни контекста (можете да редактирате горния шаблон):

{var $text = "O'Neill"}
- в текст: <span>{$text}</span>
- в атрибут: <span title={$text}></span>
- в атрибут без кавички: <span title={$text}></span>
- в JavaScript: <script>var = {$text}</script>
- в текста: <span>О'Нийл</span>
- в атрибут: <span title='O&apos;Neill'></span>
- в нецитиран атрибут: <span title="O&apos;Neill"></span>
- в JavaScript: <script>var = "O'Neill"</script>

Език, който познавате добре

Не се шегуваме, вие вече знаете езика на латето. Вече знаете как да пишете изрази на него. Всъщност те се пишат точно както в PHP. Така че не е нужно да мислите как да пишете нещата на Latte. Не е нужно да търсите в документацията. Не е нужно да учите друг език. Просто пишете като в PHP. “Повече за синтаксиса на Latte .[more-about]:/bg/syntax”

Цикъл

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

Условие

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

Изрази

{$product?->getDiscount()}

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

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

Latte срещу Twig

Latte е базиран на PHP, а Twig – на Python. Дизайнерът в Latte не трябва постоянно да превключва между две различни конвенции. Например, между for person in people шаблоните и foreach $people as $person в PHP. Той дори не трябва да мисли къде да използва {% %} и къде {{ }}, защото Latte има един разделител {...}.

Опитайте инструмента Twig to Latte tool.

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

Режим за пестене на клавиатурата, който ви вълнува

Потребителите обичат тази функция. Ние я наричаме n:attributes. Всички сдвоени тагове, като например {if} ... {/if}.. {if} ... {/if} обвиващи HTML елемент, могат да бъдат записани като негов n:if атрибут. Това дава възможност за много ефективен запис. Атрибутите могат също да имат префикси inner- и tag-, тогава поведението се прилага към вътрешността на елемента, съответно към отварящия и завършващия HTML таг. “Повече за n-атрибутите .[more-about]:/bg/syntax#toc-n-atributy”

Използване на n:атрибути:

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

И същото без тях:

{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 Разработчици

Редактиране на

Latte има собствена поддръжка в NetBeans и отлична "приставка за PhpStorm:https://plugins.jetbrains.com/…n/7457-latte ", която предлага тагове, филтри и PHP код.

Отстраняване на грешки

Останете във връзка. Плъгинът за Tracy ви информира на всяка страница кои шаблони и кои променливи се визуализират.

Шаблони от следващо поколение

Latte е система за шаблониране от следващо поколение – тя разбира HTML. Когато другите системи виждат само куп символи, Latte вижда HTML елементи. Това е причината, поради която тя има две невероятни функции като контекстно-чувствително ескапиране и “n:атрибути:”/bg/syntax#toc-n-attributes.

Как Blade, Twig и други системи виждат шаблона

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

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

Как Latte вижда шаблона

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

Разположения и наследяване

Усъвършенстваните механизми за повторно използване и наследяване на шаблони увеличават производителността ви, тъй като всеки шаблон съдържа само уникалното си съдържание, а повтарящите се елементи и структури се използват повторно.

Sandbox

Latte има брониран бункер под капака. Нарича се режим “пясъчник” и изолира шаблоните от ненадеждни източници, като например тези, редактирани от самите потребители. Той им дава ограничен достъп до тагове, филтри, функции, методи и т.н. Как работи това?

Наистина е бързо

Latte компилира шаблона до оптималния PHP код едновременно с вашата работа. Така че е толкова бърз, колкото ако създавате само PHP. Компилираният PHP код е ясен и лесен за отстраняване на грешки. Шаблонът се прекомпилира автоматично всеки път, когато променим изходния файл.

Над 15 години

Разработваме Latte вече повече от 15 години – и продължаваме да броим! Затова библиотеките, които предоставяме, са много зрели, стабилни и широко използвани. Те се ползват с доверието на редица световни корпорации и много значими уебсайтове разчитат на нас. Кой използва и се доверява на Latte?

Страхотна документация

Читателите хвалят документацията за яснота и пълнота. Пожелаваме ви приятно четене.

Отворен код

Latte е с отворен код и е напълно безплатен за използване.