Las primeras plantillas
intuitivas para PHP

Más del 27% de los sitios web
tienen vulnerabilidades críticas

La vulnerabilidad crítica más común en los sitios web es el Cross-Site Scripting (XSS). Permite a un atacante insertar un script malicioso en una página que se ejecuta en el navegador de un usuario desprevenido. Puede modificar la página, obtener información sensible o incluso robar la identidad del usuario.

Los sistemas de plantillas no defienden contra XSS. Latte es el único sistema con una defensa eficaz, gracias al escape sensible al contexto.

Cualquiera que desee un sitio web bien protegido utiliza Latte.

Cuestionario: ¿Puede defenderse de una vulnerabilidad XSS?

Fuente: Informe de Vulnerabilidad Web de Acunetix

Ejemplo de escape automático de la variable $text en varios contextos diferentes (puede editar la plantilla superior):

{var $text = "O'Neill"}
- en texto: <span>{$texto}</span>
- en atributo: <span title={$text}></span>
- en atributo no entrecomillado: <span title={$text}></span>
- en JavaScript: <script>var = {$text}</script>
- en texto: <span>O'Neill</span>
- en atributo <span title='O&apos;Neill'></span>
- en atributo no entrecomillado: <span title="O&apos;Neill"></span>
- en JavaScript: <script>var = "O'Neill"</script>

Un idioma que conoce bien

No bromeamos, ya conoces la lengua latina. Ya sabes cómo escribir expresiones en él. De hecho, están escritas exactamente igual que en PHP. Así que no tienes que pensar en cómo escribir cosas en Latte. No tienes que buscar en la documentación. No tienes que aprender otro lenguaje. Simplemente escribe como en PHP. Más sobre la sintaxis de Latte

Bucle

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

Condición

{if $post->status === Status::Published}
    Leer post
{elseif count($posts) > 0}
    Ver otros posts
{/if}

Expresiones

{$product?->getDiscount()}

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

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

Latte vs Twig

Latte se basa en PHP, mientras que Twig se basa en Python. Un diseñador en Latte no tiene que cambiar constantemente entre dos convenciones diferentes. Por ejemplo, entre for person in people en plantillas y foreach $people as $person en PHP. Ni siquiera tiene que pensar dónde usar {% %} y dónde usar {{ }}, porque Latte tiene un delimitador {...}.

Pruebe la herramienta 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>

Modo de ahorro de teclado que te entusiasma

A los usuarios les encanta esta función. La llamamos n:attributes. Cualquier etiqueta emparejada, como {if} ... {/if} {if} ... {/if} envuelve un elemento HTML puede escribirse como su atributo n: n:if. Se trata de una notación muy eficaz. Los atributos también pueden tener prefijos inner- y tag-, en cuyo caso el comportamiento se aplica al interior del elemento y a las etiquetas HTML inicial y final, respectivamente. Más información sobre n-attributes

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

Y lo mismo sin ellos:

{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 Mima a los promotores

Edición de

Latte tiene soporte nativo en NetBeans y un excelente plugin para PhpStorm que sugiere etiquetas, filtros y código PHP.

Depuración

Manténgase en contacto. El plugin para Tracy le informa en cada página de qué plantillas y qué variables se están renderizando.

Plantillas de nueva generación

Latte es un sistema de plantillas de nueva generación: entiende HTML. Donde otros sistemas sólo ven un montón de caracteres, Latte ve elementos HTML. Esta es la razón por la que tiene dos características sorprendentes como escape sensible al contexto y n:attributes.

Cómo Blade, Twig y otros sistemas ven la plantilla

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

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

Cómo ve Latte la plantilla

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

Disposiciones y herencia

Los sofisticados mecanismos de reutilización y herencia de plantillas aumentan su productividad porque cada plantilla contiene sólo su contenido único, y los elementos y estructuras repetidos se reutilizan.

Sandbox

El Latte tiene un búnker blindado bajo el capó. Se llama modo sandbox, y aísla las plantillas de fuentes no fiables, como las editadas por los propios usuarios. Les da acceso limitado a etiquetas, filtros, funciones, métodos, etc. ¿Cómo funciona?

Es realmente rápido

Latte compila la plantilla hasta el código PHP óptimo al mismo tiempo que usted trabaja. Así que es tan rápido como si creara puramente PHP. El código PHP compilado es claro y fácil de depurar. La plantilla se recompila automáticamente cada vez que cambiamos el archivo fuente.

Más de 15 años

Hemos estado desarrollando Latte durante más de 15 años, ¡y seguimos sumando! Las librerías que proporcionamos son por lo tanto altamente maduras, estables y ampliamente utilizadas. Muchas empresas internacionales confían en ellas y muchos sitios web importantes confían en nosotros. ¿Quién utiliza y confía en Latte?

Excelente documentación

Los lectores elogian la documentación por su claridad y exhaustividad. Le deseamos una agradable lectura.

Código abierto

Latte es de código abierto y su uso es totalmente gratuito.