Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

Alguns pensam que para se ser amigo basta querê - lo, como se para se estar são bastasse desejar a saúde...(Aristóteles)

2 - MVC no CakePHP

2 – MVC no CakePHP

 

Uma pessoa inteligente resolve um problema, um sábio previne.

Albert Einstein

 

O CakePHP usa o padrão MVC para organizar seu código, portando seguem algumas informações que tornarão mais simples o aprendizado do uso do CakePHP 3.

 

Model

 

Nesta camada são realizadas as operações de validação, leitura e escrita de dados no banco de dados. É responsável por salvar e receber dados do banco de

dados, como também efetua diversos processamentos com os dados.

 

A camada Model é o cérebro da aplicação. Basicamente qualquer coisa para ler, alterar, salvar ou excluir dados é nesta camada. A camada Model é a camada que sofreu a maior transformação na versão 3.

 

Nas versões anteriores o Model era representado por classes Model e Behavior.

Na versão 3 agora temos as classes Table, Entity, Behavior e Query.

 

As classes Table representam os dados armazenados, normalmente uma tabela e são responsáveis por encontrar, salvar e validar nossos dados. Também são

responsáveis por manipular grandes massas de dados, como cálculo dos totais de uma coleção de dados.

 

As classes Entity formam um conceito inteiramente novo e elas representam dados simples, isto é, apenas um registro na tabela. Usando classes Entity permite a você criar campos de dados virtuais muito complexos.

 

Classes Behavior funcionam exatamente como as da versão anterior, complementando as classes Table e Entity.

 

A nova classe Query dá ao CakePHP 3 uma incrível e poderosa maneira de interagir com bancos de dados relacionais padrões, através do que é chamada de uma

interface fluente.

 

Uma boa prática é trazer para esta camada tudo que diz respeito às regras de negócio, como cálculos ou validações de integridade de dados.

 

Por padrão o Cake trabalha com um único model por tabela.

 

Caso não criemos um model em nosso aplicativo o Cake criará um dinamicamente com as funcionalidades básicas.

 

Os métodos que operam coleções de entidades são colocados na classe Table, enquanto os recursos pertencentes a um único registro são colocados na classe Entity.

 

Controller

 

É o responsável pela integração entre as camadas Model e View. Basicamente a View irá realizar uma solicitação para o Controller como por exemplo uma coleção de dados ou a solicitação de remover algum item do banco e o Controller, por sua vez, irá enviar a instrução para a camada Model executar.

 

Um controller pode ser visto como um gerente que certifica-se que todos os recursos necessários para completar uma tarefa sejam delegados aos trabalhadores corretos.

 

Ele aguarda por requisições dos clientes, checa suas validades de acordo com autenticação ou regras de autorização, delega requisições ou processamento de dados para a camada Model, selecciona o tipo de dados de apresentação que os clientes estão aceitando, e finalmente delega o processo de renderização para a camada View.

 

Nesta camada (Controller) também podemos realizar verificações que não se referem às regras de negócio, visto que a boa prática é manter as regras de negócio no Model.

 

O Controller é o coração do aplicativo. Esta camada é a que teve a menor quantidade de alterações da versão 2 para a 3. É responsável por controlar o fluxo de dados da aplicação: recebe requisições da view e as envia para o model. Então recebe de volta do model, efetua algum processamento e envia de volta a resposta para a view.

 

O Controller deve ser magro enquanto que gordo deve ser o model, onde fica a lógica de negócios.

 

Uma solicitação de entrada do cliente é enviada para uma ação de um controller específico, que tem a lógica necessária para determinar quais dados são necessários e em qual tabela estariam. O controller verifica se o cliente solicitante tem permissão para acessar tais dados e qual view deve ser usada para a saída dos dados. A camada controller consiste de classes Controller e classes Component (opcionalmente). Um componente tem função parecida com a dos Behavior para os Model, eles auxiliam os Controllers, assim como os Behavior auxiliam os Models. O componente encapsula código que deve ser compartilhado com os Controllers.

 

Do livro oficial do CakePHP 3

 

Controllers no CakePHP lidam com solicitações HTTP e executam lógica de negócios contida em métodos de Model, para preparar a resposta, que será repassada para uma view. São usados para receber requisições e requisitar dados e processá-los e, se for o caso, entregar para a view respectiva.

 

Trabalhar com bancos de dados pode ser em controllers e models, mas em models é mais adequado e recomendado. Embora tenhamos a liberdade de trabalhar onde quizermos.

 

Actions são métodos public do controller que possuem rotas conectadas a eles.

 

Como funciona uma requisição:

- O dispatche/despachante do CakePHP usa o roteador/router para determinar qual ação do controller deve ser chamado para servir a solicitação de entrada

- O controller, então, verificar se há detalhes de autenticação (se necessário) e quaisquer parâmetros de solicitação, tais como IDs, extensões de arquivos, etc.

- A ação/action do controller solicita os dados necessários da camada de modelo

- A camada Model recupera os dados solicitados a partir do armazenamento de dados, manipula e formata conforme necessário e retorna os dados para o controlador

- O controlador então passa os dados para a camada de visão

- A camada View torna os dados em HTML (ou JSON, PDF, XML, etc.)

- Finalmente, o controlador volta a saída da camada View para o dispatcher, que envia para o cliente.

 

View

É a camada responsável por tudo que é visual, páginas, formulários, listagens, menus, o HTML. Tudo aquilo que interage com o usuário deve estar presente nesta camada.

Representadas por HTML, classes Helpers, View, View Cells

A View não realiza operações diretamente com o banco de dados nem trata diretamente com o Model. Ela as solicita e e exibe através do Controller, que

intermedia suas solicitações com o Model.

No CakePHP 3 as views agora ficam no diretório Template

O diretório View contém apenas classes gerais.

Se o Controller é o coração, Model é o cérebro da nossa aplicação, então a View é a pele.

 

Para a maioria das aplicações, as views são uma mescla entre HTML e PHP, mas também podem ser distribuídas como XML, CSV, ou ainda dados binários.

Os templates da view do CakePHP são código PHP para apresentação que são inseridos dentro do layout do aplicativo.

Um layout é um código de apresentação que contém em seu interior uma view/template. Arquivos de layout contêm elementos de site comuns, como cabeçalhos, rodapés e elementos de navegação. Seu aplicativo pode ter vários layouts e você pode alternar entre eles.

Os arquivos de template do CakePHP são armazenados em src/Template dentro de uma pasta com o nome do controller ao qual eles correspondem. Então, teremos que criar uma pasta chamada "Artigos" nesse caso.

Você precisa incluir o componente Flash em qualquer controlador onde você o usará. Por conta disso ele já vem no src/Controller/AppController.php gerado pelo bake.

O método $this->Form->control() é usado para criar elementos de formulário com o mesmo nome. O primeiro parâmetro diz ao CakePHP a que campo eles correspondem, e o segundo parâmetro permite que você especifique uma grande variedade de opções - neste caso, o número de linhas para a área de texto. Há um pouco de introspecção e convenções usadas aqui. O control() gerará diferentes elementos de formulário com base no campo de modelo especificado e usará inflexão para gerar o texto do rótulo (os nomes virão da tabela no banco de dados). Você pode personalizar o rótulo, a entrada ou qualquer outro aspecto dos controles de formulário usando opções. A chamada $this->Form->end() fecha o formulário.

 

Resumidamente

Models – consultam o banco de dados e retorna os dados necessários

Views – são páginas que renderizam os dados recebidos

Controllers – manipulam as requisições dos usuários, recebe dados dos models e passa para as views

Mais detalhes

https://book.cakephp.org/3.0/en/intro.html

 

Comments fornecido por CComment

Novo Testamento

Ora, havia um homem rico, e vestia-se de púrpura e de linho finíssimo, e vivia todos os dias regalada e esplendidamente.
(Lc, 16:19)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper