Controllers e Views
#
IntroduçãoSeguindo 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 arquivosSegue 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 classesAs 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 controllerTodos os controllers devem extender a classe principal \Onyx\Controller
e executar o método initialize()
.
#
Views: Setando os TemplatesExistem 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çãoPor 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 ConsultasAs 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.