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
{
"require": {
"league/plates": "3.*"
}
}
Certifique-se de incluir também o arquivo de carregamento automático do Composer no seu projeto:
require 'vendor/autoload.php';
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
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') ?>
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']) ?>
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>
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>
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>
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]);