Views
Não é nada usual retornar uma simples string após receber uma requisição e por isso deve-se utilizar as views agregadas às rotas e controllers para tornar a resposta mais útil.
As views podem ser desenvolvidas em /resources/views
e devem ser criadas em .html
. É possível também receber variáveis que serão alteradas no conteúdo final:
namespace App\Controllers\Pages;
use \App\Utils\View;
class Product {
public static function getProduct($req, $res) {
$content = View::render('pages/product', [
'name' => "Produto nome",
'description' => "Produto descrição"
]);
return $res->send(200, $content);
}
}
Arquivo /resources/view/pages/product.html
:
<h1>{{name}}</h1>
<p>{{description}}</p>
<!-- <h1>Produto nome</h1> -->
<!-- <p>Produto descrição</p> -->
Padronizando páginas
É possível utilizar a classe já criada Page
para popular páginas com conteúdos padrões como o header, navbar e footer:
namespace App\Controllers\Pages;
use \App\Utils\View;
class Product extends Page {
public static function getProduct($req, $res) {
$content = View::render('pages/product', [
'name' => "Produto nome",
'description' => "Produto descrição"
]);
$content = parent::getPage("Produto Título", $content);
return $res->send(200, $content);
}
}
Com uso da classe Page
o $content
irá conter a junção dos arquivos page.html
, header.html
e footer.html
(já existentes em /resources/view/pages
).
É possíve também adicionar novos arquivos padrões para cabeçalho e rodapé, podendo por exemplo criar diferentes cabeçalhos para a área pública e área administrativa:
$content = parent::getPage("Produto Título", $content, [
'header' => 'header-admin',
'footer' => 'footer-admin'
]);
Caso deseje que o header e footer não sejam inseridos, defina-os como false
.
Variáveis padrões
O arquivo define.php
define algumas variáveis padrões para uso nas views:
View::define([
'URL' => URL,
'PUBLIC' => URL . '/public'
]);
As variáveis padrões facilitam na inserção de dados importantes para usabilidade, por exemplo:
{{URL}} <!-- URL base do projeto -->
{{PUBLIC}} <!-- URL dos arquivos públicos -->
A inserção de uma mídia ou link pode ser feito da seguinte maneira:
<img src="{{PUBLIC}}/assets/img/php-logo.png" />
<a href="{{URL}}"><button>Início</button></a>
<a href="{{URL}}/products"><button>Produtos</button></a>
Last updated