Olá Benício, com está?
Escute amigo, você precisou colocar está lógica em page_controller por alguma imposição externa? Por exemplo: O cliente mandou? o chefe mandou? O sistema é legado?
Pergunto isso pq espera-se que
pages_controller controle as páginas estáticas de sua aplicação, assim como
default.ctp contenha o mínimo de html possível, o suficiente apenas para manter a aparência (Theme) uniforme de seu site.
A página default de sua aplicação seria então composta por
default.ctp e
home.ctp. E então você poderia criar quantas páginas estáticas fossem necessárias.
Assim, você aproveitaria melhor o poder e as facilidades que os desenvolvedores do Cake criaram para todos nós.
Sendo assim, como você informou que são apenas dois níveis de informação necessárias (
Tipos, e
subtipos), e considerando que estas tabelas estão relacionadas em "um para muitos", a solução para seus problemas seria:
- Fazer os
controllers e
models das duas tabelas, até com o bake, se quiser ganhar tempo, com todos os métodos:
index,
add etc...
- Usar
findAll para pegar todos os
Tipos, pois como estão relacionadas as tabelas, cada
Tipo virá com seus respectivos
Subtipos.
- Usar
requestAction() e
renderElement() para lançar estes dados na page
home.ctp, que eu acho que é o que vc precisa.
Achou que a performance da aplicação ficou prejudicada com a utilização de
requestAction e
renderElement?
Então você pode setar como rota principal da aplicação uma página dinâmica, como a
index.ctp do tipos_controller, e usar o método findAll normalmente.
Vale lembrar que a possível perda de performance citada na documentação, quando se utiliza Request e Render, são sentidas apenas nas grandes aplicações com diversas conexões simultâneas. Para as médias e pequenas não vi relatos de reclamações.
Voltando para a solução, usando o findAll, você pode ajustar com os argumentos deste método para fornecer um resultado mais satisfatório. Ou usar o Behavior
Containable, ou até mesmo o
Compact para mostrar as informações, do jeito que necessita.
Bom, aproveitando o que o Frameworks já lhe fornece, você se livra melhor da POG.
Espero ter ajudado,
Marco A. Lima.