Controllers e Views
Introdução#
Seguindo o padrão de Hierarquia de templates do próprio WordPress que pode ser vista aqui, o Onyx Theme carrega seus controllers de acordo com a existencia desses arquivos seguido do sufixo Controller dentro da pasta ./core/app/Controllers.
Os controllers são responsáveis por fazer a consulta/queries no banco e carregar as Views. Você pode ver os exemplos práticos nos controllers que acompanham o tema.
info
A não existência de nenhum controller em cima da hierarquia, os templates padrões do WordPress são carregados normalmente.
Por padrão o tema vem com os seguintes controllers no padrão PSR4:
- ./core/app/Controllers/
- ArchiveController.php
- CategoryController.php
- Error404Controller.php: Exclusivamente o controller do 404 foge do padrão
- HomeController.php
- PageController.php
- SearchController.php
- SingleController.php
Nomeação de arquivos#
Segue uma tabela com exemplos de nomeação dos controllers carregados em ordem.
Os arquivos dos controllers são baseados nos templates da hierarquia do WordPress e transformados de acordo com o PSR4.
| Tipo | Arquivos |
|---|---|
| Home | HomeController.php IndexController.php |
| Single | Single{$PostType}{$Slug}Controller.php Single{$PostType}Controller.php SingleController.php |
| Pages | Page{$Slug}Controller.php Page{$ID}Controller.php PageController.php |
| Categories | Category{$Slug}Controller.php Category{$ID}Controller.php CategoryController.php ArchiveController.php |
| Tags | Tag{$Slug}Controller.php Tag{$ID}Controller.php TagController.php TagController.php ArchiveController.php |
| Taxonomies | Taxonomy{$taxonomy}{$term}Controller.php Taxonomy{$taxonomy}Controller.php TaxonomyController.php ArchiveController.php |
| Author | Author{$Author}Controller.php Author{$ID}Controller.php AuthorController.php ArchiveController.php |
| CPT | Archive{$PostType}Controller.php ArchiveController.php IndexController.php |
note
Dica: Você poderá utilizar um var_dump( O::get_hierarchy() ); para verificar os templates da página atual.
Para mais informações sobre o funcionamento do padrão de hierarquia do WordPress visite Page-template-files e wphierarchy.
Nomeação das classes#
As classes dos controllers são nomeadas de acordo com o PSR4 relacionadas aos arquivos de controllers carregados.
Segue uma tabela com exemplos de nomeação das classes.
| Arquivo | Classe |
|---|---|
| HomeController.php | HomeController |
| SingleController.php | SingleController |
| SinglePostController.php | SinglePostController |
| PageController.php | PageController |
| Page{$Slug}Controller.php | Page{Slug}Controller |
| CategoryController.php | CategoryController |
Criando um controller#
Todos os controllers devem extender a classe principal \Onyx\Controller e executar o método initialize().
Views: Setando os Templates#
Existem 3 maneiras básicas de se chamar as views. Todos os arquivos obrigatoriamente devem ficar na pasta ./views/.
Os templates são carregados por ordem de existência na hierarquia.
Views: Cancelar renderização#
Por padrão os Controllers no Onyx Theme renderiza automaticamente as views. Caso deseje um controle maior sobre elas, podemos cancelar o método render_view() passando um método no initialize().
Contexto: Queries e Consultas#
As views do Timber\Twig trabalham recebendo as variáveis de contexto para renderizar as informações na tela.
Você pode passar uma ou várias queries/consultas para o contexto caso necessário e também utilizar o hook timber/context parra repassar contextos globais da aplicação.
Além das queries, você pode passar qualquer tipo de informação junto com o contexto para o Timber. Como um campo personalizado com alguma informação importante.
info
note
Neste exemplo, não utilizamos os helpers set_context(), set_templates() ou set_{type}_templates(). Injetamos os templates e contextos diretamente na propriedade $templates.