Views
Uma View é uma página inteira ou um fragmento de página — como um cabeçalho, rodapé ou barra lateral — e pode ser livremente aninhada para formar layouts hierárquicos.
Criando Views
Para entender, você pode seguir o exemplo abaixo, criando 3 arquivos:
system/views/blog/header.php:
<header>
<h1>Meu Blog</h1>
</header>
system/views/blog/header.php:
<footer>
<p>© <?=gmdate('Y')?> Meu Blog</p>
</footer>
system/views/blog/index.php:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>My Blog</title>
<link rel="stylesheet" type="text/css" href="blog.css" />
</head>
<body>
<?php
View::render('blog.header');
?>
<main>
<h2><?=$title?></h2>
<p><?=$contentes?></p>
</main>
<?php
View::render('blog.footer');
?>
</body>
</html>
Em seguida, no controlador, na função ou no bloco de código, chame o método View::render() assim:
$app->action('GET', '/blog', function ($app, $params) {
$entries = [
'title' => 'My Blog',
'contentes' => 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.',
];
View::render('blog.index', $entries);
});
É importante observar que a View só é renderizada após o processamento da rota ou se ocorrer uma exceção ou erro grave. Portanto, dentro de um closure, função ou método de controlador, você pode usar funções para controlar o cabeçalho sem se preocupar com erros, e pode defini-las em qualquer ordem, por exemplo:
$app->action('GET', '/foo', function ($app, $params) {
View::render('bar.baz');
header('Pragma: public');
setcookie('meucookie', time());
});
Compartilhar variáveis entre Views
Com o método View::share(), você pode compartilhar um valor que será acessível pela mesma variável em diferentes Views, por exemplo:
$app->action('GET', '/blog', function ($app, $params) {
View::data('year', gmdate('Y'));
View::data('hello', 'Hi!');
View::render('foo');
View::render('bar');
});
system/views/foo.php:
<section>
<h2>Foo view</h2>
<p><?=$year?> - <?=$hello?></p>
</section>
system/views/bar.php:
<section>
<h2>Bar view</h2>
<p><?=$year?> - <?=$hello?></p>
</section>
<?php
View::render('baz');
?>
system/views/baz.php:
<section>
<h2>Baz view</h2>
<p><?=$year?> - <?=$hello?></p>
</section>