Motores de template

O Lithe oferece flexibilidade ao permitir que você escolha entre diversos motores de template, como PHP puro, Blade e Twig. Além dos motores padrão, você pode configurar outros para otimizar a criação e a renderização de interfaces dinâmicas.

Configurando o Lithe para Renderização de Templates

Para que o Lithe possa renderizar arquivos de modelo, você precisa configurar algumas opções no seu aplicativo. Siga os passos abaixo:

1

Diretório de Templates

Primeiramente, defina o diretório onde os arquivos de modelo estão localizados. Você pode fazer isso com o seguinte código:

$app->set('views', __DIR__ . '/views');
2

Motor de Template

Em seguida, configure o mecanismo de template que será utilizado pelo Lithe. Por exemplo, para usar o Blade, você deve definir:

$app->set('view engine', 'blade');
3

Instalação do Pacote

Após configurar o motor de template desejado, instale o pacote Composer correspondente ao mecanismo escolhido para garantir que tudo funcione corretamente.


Usando os Motores de Template

O Lithe suporta diversos motores de template, como PHP nativo, Blade e Twig, oferecendo flexibilidade na renderização de views. Para utilizar um desses motores, siga os passos:

1

Defina o motor de template

$app->set('view engine', 'default');
2

Crie um arquivo de template Blade

No diretório src/views, crie index.php com o conteúdo:

<html>
    <body>
        <h1>Hello, <?= $name ?></h1>
    </body>
</html>
3

Instale o pacote via Composer

Renderizando Templates

Independentemente do motor de template, use a mesma abordagem para renderizar templates:

$app->get('/', function ($req, $res) {
  $res->view('index', ['name' => 'William']);
});

Para aprender mais sobre Blade e Twig, consulte a documentação oficial.


Motores de Template Personalizados

Nota: Esta seção contém tópicos avançados. Caso não queira aprender sobre isso agora, sinta-se à vontade para pular esta seção.

Use o método engine da classe Lithe\App para configurar um motor de template ou para criar seu próprio motor personalizado. Isso permite que você escolha entre os motores disponíveis, como Blade ou Twig, ou desenvolva uma solução específica que atenda às suas necessidades, garantindo flexibilidade na renderização dos arquivos de modelo da sua aplicação.

$app->engine($name, $callback);

Onde:

  • $name: Nome do motor de template.
  • $callback: Função de configuração do motor de template (aceita os seguintes itens como parâmetros: a localização do arquivo, o caminho das views, e a array de opções).

O código a seguir é um exemplo de implementação de um motor de template muito simples chamado lithe.view.

// Definição do motor de template "lithe.view"
$app->engine('lithe.view', function ($file, $views, $options) {
    // Leitura do conteúdo do arquivo de template
    $content = file_get_contents($views . '/' . $file . '.lithe.view');

    // Substituição das variáveis
    foreach ($options as $key => $value) {
        $content = str_replace('{{ ' . $key . ' }}', $value, $content);
    }

    // Retorno do conteúdo renderizado
    echo $content;
});

// Configuração do motor de template
$app->set('view engine', 'lithe.view');

Seu aplicativo agora será capaz de renderizar arquivos .lithe.view. Crie um arquivo chamado index.lithe.view no diretório de views com o seguinte conteúdo:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ message }}</h1>
    <p>Este é um arquivo .lithe.view sendo renderizado!</p>
</body>
</html>

Então, crie a seguinte rota em seu aplicativo:

$app->get('/', function ($req, $res) {
    $res->view('index', [
        'title' => 'Meu motor de template', 
        'message' => 'Hello World'
    ]);
});

Quando você fizer uma requisição para a página inicial, o arquivo index.lithe.view será renderizado como HTML.