Improve this Doc

Uma Requisição Típica do CakePHP

Nós já abordamos os ingredientes básicos do CakePHP, então agora vamos dar uma olhada em como os objetos trabalham juntos para completar uma requisição básica. Continuando com o exemplo da requisição original, vamos imaginar que nosso amigo Ricardo apenas clicou no link “Compre um bolo personalizado agora!” em uma landing page de uma aplicação CakePHP.

Um diagrama de fluxo mostrando uma típica requisição CakePHP

Um diagrama de fluxo mostrando uma típica requisição CakePHP

Figure: 2. Requisição típica do CakePHP.

Em preto = elemento requerido, em cinza = elemento opcional, em Azul = callbacks

  1. Ricardo clica no link apontando para http://www.example.com/cakes/buy, e o navegador dele faz uma requisição para seu servidor web.
  2. O roteador analisa a URL para extrair os parâmetros desta requisição: o controller, a ação, e qualquer outro argumento que afeta a lógica do negócio durante esta requisição.
  3. Usando rotas, a URL da requisição é mapeada para uma ação de um controller (um método em uma classe controller específica). Neste caso, será o método buy() do controller CakesController. O callback beforeFilter() do controller é chamado antes de qualquer ação lógica do controller. As linhas tracejadas em azul mostram isso no diagrama.
  4. O controller pode usar models para obter acesso aos dados do aplicativo. Neste exemplo o controller usa o model para pegar no banco de dados as últimas compras do Ricardo. Qualquer callback do model, behaviors ou DataSources que for aplicável neste momento, será chamado. Enquanto a utilização de Models não seja obrigatória, todas os controllers inicialmente requerem ao menos um model.
  5. Após o model buscar os dados, estes são retornados para o controller. Callbacks de um Model podem ser aplicados.
  6. O controller poderá utilizar componentes para refinar os dados ou executar outras operações (manipular sessão, autenticar ou enviar e-mails são exemplos)
  7. Uma vez que o controller usou os models e componentes para preparar os dados de forma suficiente, os dados são passados para a view usando o método set() do controller. Callbacks do controller podem ser chamados antes que os dados sejam passados. A view é executada, podendo incluir o uso de elementos e/ou helpers. Por padrão, a view é renderizada dentro de um layout.
  8. Adicionalmente, callbacks do controller (como o afterFilter) podem ser aplicados. A view renderizada e completa é enviada para o navegador do Ricardo.