Warning
Lembrando existe o Adianti Template e Adianti Framework, veja a diferença em Apresentação > Ambiente. Esse minicurso tem o foco no Adianti Framework
O que acontece quando chama seu sistema feito em Adianti ?
Acesse a url do Adianti Tutor como exemplo https://framework.adianti.me/tutor/
- chama o index.php
- chama o inti.php
- carrega o tema
- inicia seção TSession
- cerrega o menu.xml
- chama o engine.php
- chama o class padrão ou clicada no menu
Toda aplicação inicia no arquivo <RAIZ_SISTEMA>/index.php
somente na primeira vez em que o usuário acessa o sistema ou sempre que o mesmo forçar a recarga da página (F5 ou CTRL+R). Isto ocorre por que toda a ação realizada é carregada por meio de requisições Javascript assíncronas, por meio do back-end <RAIZ_SISTEMA>/engine.php
, não necessitando recarga da página. Em seguida é iniciada uma nova seção. TSession é a classe responsável por manipular a sessão. Logo depois é chamado o arquivo <RAIZ_SISTEMA>/init.php
que carrega todas as libs e informações do arquivo <RAIZ_SISTEMA>/app/config/application.ini
. Logo depois é carregado o tema, injetando as várias informações como: MENU, LIBRARIES, {class} e etc.
No arquivo <RAIZ_SISTEMA>/index.php
tem a linha abaixo o atributo class é o nome da classe que é um controlador.
AdiantiCoreApplication::loadPage($_REQUEST['class'], $method, $_REQUEST);
-
Model: Uma entidade do modelo. Estas entidades manipulam dados e desempenham algumas regras de negócio. São representadas por classes armazenadas em app/model. Ex: Cliente, Venda, Pedido;
-
View: Interface visual na fronteira entre o sistema e o usuário. Pode ser representada por um Template HTML (app/resources), ou um grupo de objetos compondo um objeto maior (app/view). Estes objetos geralmente lidam com aspectos de apresentação ou coleta de informações ao usuário final;
-
Controller: Responsável por receber ações vindas de uma classe View e tomar ações. Coordena a sequência de atividades em resposta a uma ação. Para isto, geralmente interage com vários objetos Model para oferecer uma resposta ao objeto View; A telas criadas dinamicamente ficam aqui
-
Service: Responsável por prestar um serviço para a aplicação (serviço interno), como, por exemplo, processar uma regra de negócio complexa, ou prestar um serviço para outra aplicação (ex: REST Service). Representada por uma classe armazenada na pasta app/service.
Um ponto importante é conhecer a estrutura de diretórios do adianti para iniciar o entendimento especialmente arquivos na raiz e diretório APP
As configurações gereais do sistema ficam no arquivo <RAIZ_SISTEMA>/app/config/application.ini
veja mais detalhes em arquivo_config_app
Warning
O Adianti framework utiliza o termo template para duas coisas diferentes:
- Template o esqueleto de sistema feito com Adianti, veja a diferença em Apresentação > Ambiente
- Template o esquema layout para o sistema.
Tip
Para evitar confusão desse ponto para frente o termo template será sempre o esqueleto de sistema e termo TEMA será usado para aparência (esquema cores, layout, fonte e etc).
Se acesse a url do Adianti Tutor nos dois links e repare as diferenças
- Bootstrap theme3- https://framework.adianti.me/tutor/
- Material theme4 - https://framework.adianti.me/tutor-material/
O Adianti tem dois temas básicos um com estilo BootStrap e outro com tema Material. O Tema é feito usando o Twig que é um motor de templates (template engine) para PHP. Ele permite separar a lógica da aplicação (PHP) da apresentação (HTML), promovendo uma arquitetura de código mais organizada e manutenível. Em conjunto com o Admin LTE para criar o Layout principal dos sistemas criados. O Layout pode ser no estilo bootstrap ou Material
Os temas são responsivos: seja qual for o tamanho da tela vai acompanham a demanda, proporcionando uma experiência de uso facilitada. Os menus se adaptam automaticamente, permitindo uma navegação fluida em qualquer dispositivo. E não para por aí! Os formulários, datagrids e outros componentes também se ajustam perfeitamente ao espaço disponível.
Veja exemplos no Instragram do Adianti, exemplos da responsividade
No GitHub existe um projeto com vários temas. Veja https://github.com/bjverde/adianti-theme
Canal ScriptDevBR, no Youtube: Personalizando o Template do Adianti Framework
Uma página é representada por uma classe de controle, que poder conter diversos componentes do Framework: formulários, datagrids, campos, botões, links e etc.
As classes de controle podem ser filhas de TPage ou de TWindow.
- TPage são exibidas no quadro central do layout.
- TWindow são sempre exibidas em uma nova janela.
- outra opção é cortina lateral, geralmente com TPage.
Olhe o Adianti Tutor 7.6 para ver mais exemplos de tipos de paginas, um destaque especial para as telas: Formulário multi etapa, Wizard multi etapa, Páginas internas (inbox)
O menu é renderizado por meio da classe TMenuBar, que faz a sua interpretação. O Arquivo do menu fica em <RAIZ_SISTEMA>/menu.xml
o menu é composto basicamente dos itens
- menuitem com o atributo label="Nome que vai aparecer"
- icon geralmente do font awesome, olhe o Tutor no componente Ticon seguido da cor do icone
- action é nome da classe podendo ter o nome do metodo ou não
Important
Só crie um item de menu para uma classe que existe! Se criar sem existir vai gerar um erro!.
<?xml version="1.0" encoding="utf-8"?>
<menu>
<menuitem label="Básico">
<icon> fa-fw </icon>
<menu>
<menuitem label="Pessoa">
<icon>fas:users fa-fw </icon>
<action>PessoaList#method=onShow</action>
</menuitem>
<menuitem label="Telefone">
<icon>fas:phone fa-fw </icon>
<action>TelefoneList#method=onShow</action>
</menuitem>
</menuitem>
</menu>