View VH
O Hello fornece uma sintaxe simples e flexível para renderização fácil de arquivos de visualização no lado do servidor.
Introdução
O motor de template do Hello Microframework, conhecido como VH, foi desenvolvido com o objetivo de ser simples e extensível. Foi projetado para oferecer recursos mais enxutos, porém suficientes para desenvolver templates completos de forma simples. O VH proporciona uma maneira fácil e organizada de renderizar arquivos de visualização no lado do servidor.
Para utilizar a sintaxe VH, basta colocar seus arquivos de template com extensão "*.view.php" na pasta "resources/views" do seu projeto. O VH foi inspirado em outros motores de template, como o Blade, porém de forma mais simplificada.
O VH utiliza um sistema de cache. Isso significa que quando um arquivo de template é criado e renderizado, ele cria um segundo arquivo em cache. Nas próximas requisições, o acesso ao arquivo não será feito no arquivo original, mas sim no arquivo que está armazenado em cache. Dessa forma, é possível obter um desempenho melhor, uma vez que o servidor não precisa reprocessar o template a cada requisição.
Quando o arquivo original é modificado e atualizado pelo desenvolvedor, o arquivo de cache correspondente também é atualizado. Isso permite que o fluxo de cacheamento seja repetido, garantindo que as alterações no template sejam refletidas corretamente.
O uso do sistema de cache no VH ajuda a melhorar o desempenho e a eficiência do processo de renderização de templates.
Alternativas ao VH
É possível usar um motor de template diferente do oferecido nativamente pelo Hello Microframework. Para fazer isso, você pode registrar o seu motor de template como um serviço. No entanto, é importante ressaltar que incentivamos os desenvolvedores a utilizar ferramentas reativas, como VueJS, ReactJS, Angular, entre outras.
Acreditamos que a responsabilidade principal de renderizar a interface deve estar no dispositivo do usuário final que está acessando a aplicação. Dessa forma, o foco principal da aplicação pode ser direcionado para o processamento e o fornecimento de dados brutos, lidando com a lógica de negócio. As ferramentas reativas oferecem recursos robustos para a criação de interfaces de usuário interativas e dinâmicas.
No entanto, não há impedimento em utilizar o motor de template nativo VH, baseado em PHP, ou qualquer outro motor de template similar de sua escolha, se assim preferir. A escolha do motor de template depende das necessidades e preferências do projeto e da equipe de desenvolvimento.
Você poderá usar o Hello CLI com o comando make para criar um arquivo de template., usando a seguinte sentaxe:
php hello make:view nome-do-arquivoImpressão de variáveis
Impressão de variáveis do tipo texto ou numérica:
Impressão de variáveis de conteúdo do tipo HTML:
Token CSRF
Você pode exibir as seguintes variáveis no template VH padrão para o campo de CSRF e o token de CSRF:
Estrutura condicional
O VH oferece diretivas para trabalhar com estruturas condicionais de maneira simples e elegante dentro do seu arquivo de visualização.
Aplicando estilos condicionais
É possível utilizar funções auxiliares para aplicar estilos e classes CSS de forma condicional.
Estrutura de repetição
O VH oferece diretivas para trabalhar com estruturas de repetições de maneira simples e elegante dentro do seu arquivo de visualização.
Função de inclusão:
Você pode incluir qualquer arquivo externo de template HTML com VH no seu arquivo atual sem precisar especificar a extensão do arquivo. Basta informar apenas o nome do arquivo, sem o "view.php". Por exemplo, se você deseja incluir o "header" no seu "index", pode dividir o seu layout em partes, como header, sidebar, content e footer, em arquivos de templates VH separados.
Além disso, é possível acessar subpastas de arquivos de template utilizando o ponto (.) em vez da barra (/), o que facilita a legibilidade da sintaxe. A inclusão de um template dentro de outro template VH é uma forma simples de estender as funcionalidades do seu projeto e melhorar a organização visual do sistema, facilitando futuras manutenções.
Lembre-se de que a função de template include funciona de maneira semelhante à função auxiliar view, que retorna um arquivo de template renderizado. Na verdade, a função include utiliza a função view nos bastidores para fornecer esse recurso.
Além disso, é possível incluir arquivos de templates VH diretamente de repositórios de módulos utilizando o símbolo "@" seguido do nome do diretório do módulo e do caminho ou nome do arquivo de template. Por exemplo: @Modulo.home. Dessa forma, a função include irá carregar diretamente o arquivo de template que esteja dentro do diretório "View" existente na estrutura do módulo. Isso proporciona uma maneira conveniente de organizar e reutilizar templates de módulos em seu sistema.
Ao utilizar a função ou diretiva 'include', que utiliza internamente a função auxiliar 'view', é possível declarar um segundo parâmetro para injetar variáveis como dependência, de forma semelhante à função 'view'. Essas variáveis podem ser recuperadas no próximo visualizador.
Construindo componentes com sections
Um dos melhores recursos da linguagem de template VH, também conhecida como View HTML, é a possibilidade de componentizar trechos de código. Uma section no VH é essencialmente um bloco isolado de código HTML e JavaScript, que pode ser reutilizado em qualquer parte do sistema. Isso permite criar componentes, como modais e botões, escrevendo o código apenas uma vez e reutilizando-o em várias partes do seu template. As sections podem ser criadas em arquivos de templates distintos e usadas para estender as funcionalidades de outros componentes, criando uma estrutura modular.
Além disso, é possível passar valores para dentro dos componentes, utilizando um segundo parâmetro do tipo array associativo. As chaves desse array podem ser acessadas utilizando o símbolo "@" na frente. No entanto, dentro de uma section, não é possível utilizar aspas duplas diretamente. Para fazer uso delas, é necessário escapá-las da seguinte forma: """.
Para criar um componente usando a section, utilize a seguinte sintaxe: {section 'nome_da_sua_section'}. Em seguida, para exibir a section, utilize a função de template show da seguinte forma: {show 'nome_da_sua_section'}. É possível passar valores de propriedades para dentro do componente da seguinte forma: {show 'nome_da_sua_section', ['nome' => 'Paulo']}. Para acessar o valor do array informado no show dentro da sua section, basta utilizar o símbolo "@" na frente do nome do índice, como no exemplo: @nome. Caso você não informe um array, o valor a ser acessado terá o nome de "@scope".
Podemos mudar o dizer do título ou até mesmo a cor da seguinte forma.
Passando um valor diferente de um array.
PHP bruto
Em algumas situações, pode ser necessário escrever código PHP puro dentro de um arquivo de template VH. Para fazer isso, você pode usar a diretiva php. Essa diretiva permite que você insira blocos de código PHP diretamente no seu arquivo de template VH, sem a necessidade de escapar ou modificar a sintaxe.
Aqui está um exemplo de como usar a diretiva php:
Nesse exemplo, o bloco de código PHP está envolvido pela diretiva php. Você pode escrever qualquer código PHP válido dentro desse bloco, incluindo declarações, expressões, loops, condicionais, etc. O código será interpretado e executado quando o arquivo de template for renderizado.
Lembre-se de que, ao utilizar a diretiva php, você está inserindo código PHP diretamente no seu arquivo de template VH, o que pode afetar a legibilidade e a manutenção do código. Portanto, é importante usar essa diretiva com moderação e considerar se existem alternativas mais adequadas, como a criação de funções ou variáveis no arquivo do controlador.
Diretiva JSON
A função {json} é utilizada para converter um array em um objeto JSON. Essa função é amplamente empregada na interação entre código PHP e JavaScript, especialmente para retornar dados de um modelo de banco de dados em formato de array ou objeto de array em JavaScript.
Exemplo de código usando a diretiva json:
Exemplo de saída do código acima:
Last updated