DEV Community

Cover image for Plates Native PHP Template[Português - Brasil]
Antonio Silva
Antonio Silva

Posted on

2

Plates Native PHP Template[Português - Brasil]

Site oficial da referência do plates


Sobre

O Plates é um sistema de template PHP nativo que é rápido, fácil de usar e fácil de estender. Ele é inspirado no excelente mecanismo de template Twig e se esforça para trazer a funcionalidade moderna da linguagem de template para templates PHP nativos. O Plates foi projetado para desenvolvedores que preferem usar templates nativos de PHP em vez de linguagens de template compiladas, como Twig ou Smarty.

Instalação

Plates está disponível em Packagist e pode ser instalado usando Composer. Isso pode ser feito executando o seguinte comando ou atualizando seu arquivo composer.json.

composer require league/plates
Enter fullscreen mode Exit fullscreen mode
{
    "require": {
        "league/plates": "3.*"
    }
}
Enter fullscreen mode Exit fullscreen mode

Certifique-se de incluir também o arquivo de carregamento automático do Composer no seu projeto:

require 'vendor/autoload.php';
Enter fullscreen mode Exit fullscreen mode

Exemplo simples

Aqui está um exemplo simples de como usar placas. Assumiremos a seguinte estrutura de diretórios:

📦Plates
 ┣ 📂templates
 ┃ ┣ 📜profile.php
 ┃ ┗ 📜template.php
 ┗ 📜index.php
Enter fullscreen mode Exit fullscreen mode

Definir um layout
A função layout () permite definir um modelo de layout que um template implementará. É como ter templates separados de cabeçalho e rodapé em um arquivo.

<?php $this->layout('template') ?>
Enter fullscreen mode Exit fullscreen mode

A função layout () pode ser chamada em qualquer lugar de um template, pois o modelo de layout é realmente renderizado em segundo. Normalmente, ele é colocado na parte superior do arquivo.

Atribuir dados
Para atribuir dados ( variáveis ) a um modelo de layout, passe-os como uma matriz para a função layout (). Esses dados estarão disponíveis como variáveis de escopo local no modelo de layout.

<?php $this->layout('template', ['title' => 'Exemplo Simples']) ?>
Enter fullscreen mode Exit fullscreen mode

O modelo da página

<?php $this->layout('template', ['title' => 'Simple example']) ?>

<h1>Fruta Lista</h1>
<ul>
    <?php foreach( $frutas as $fruta ): ?>
        <li>
            <?=$this->e($fruta)?>
        </li>
    <?php endforeach ?>
</ul>
Enter fullscreen mode Exit fullscreen mode

Acessando o conteúdo
Para acessar o conteúdo do modelo renderizado dentro do layout, use a função section(), passando 'content' como o nome da seção. Isso retornará todo o conteúdo emitido do modelo que não foi definido em uma seção.

O modelo de layout

<html>
    <head>
        <title><?=$this->e($title) ?></title>
    </head>
    <body>
        <?=$this->section('content')?>
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode

Escaping
Escaping é uma forma de filtragem de dados que desinfete a entrada insegura fornecida pelo usuário antes de produzi-la como HTML

<h1>Hello, <?=$this->escape($name)?></h1>

<!-- Usando a função alternativa e abreviada -->
<h1>Hello, <?=$this->e($name)?></h1>
Enter fullscreen mode Exit fullscreen mode

Dentro do seu controlador

<?php

    require 'vendor/autoload.php';

    // Criar uma nova instancia Plates
    $templates = new League\Plates\Engine('templates');

    $frutas = ['Maçã','Banana', 'Melancia', 'laranja', 'Uva'];

    // Renderizar o template
    echo $templates->render('profile', ['fruta' => $frutas]);
Enter fullscreen mode Exit fullscreen mode

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay