2.2 Una tipica richiesta CakePHP

Abbiamo già visto gli ingredienti di base di CakePHP, adesso vedremo come ogni oggetto lavora insieme agli altro per completare una richiesta di base. Continuando con la richiesta dell'esempio originale, immaginiamo che il nostro amico Ricardo abbia appena cliccato sul link "Compra subito la tua torta personalizzata!" sulla pagina di destinazione di una applicazione CakePHP.

Flow diagram showing a typical CakePHP request

Nero = elemento richiesto, Grigio = elemento opzionale, Blu = callback

Figura 2. Una tipica Request CakePHP.

  1. Ricardo clicca sul link che punta a http://www.example.com/cakes/buy ed il suo browser crea una richiesta sul nostro web server.
  2. Il Router analizza la URL per estrarre i parametri della richiesta: il controller, l'azione ed ogni altro argomento che avrà effetto sulla logica di business nel corso della richiesta stessa.
  3. Utilizzando le rotte, la richiesta URL è connessa ad una specifica azione di un controller (un metodo in una specifica classe di controller) In questo caso il metodo buy() del controller CakesController. Il callback del controller beforeFilter() viene richiamato prima che ogni altra logica venga eseguita
  4. Il controller può usare modelli per avere accesso ai dati dell'applicazione. In questo esempio, il controller utilizza un modello per estrarre gli ultimi acquisti di Ricardo dal databe. Qualsiasi modello callback, behavior e DataSource può essere applicato durante questa operazione. Mentre l'uso di un modello non è richiesto, tutti i controller CakePHP inizialmente ne richiedono almeno uno.
  5. Dopo che il modello ha ritrovato i dati, li ritorna al controller. Può essere applicato un modello di callback.
  6. Il controller può usare componenti per ulteriori rifiniture dei dati o eseguire altre operazione (manipolazioni di sessione, autentificazione o invio di una emal, per esempio).
  7. Una volta che il controller ha utilizzato i modelli ed i componenti per preparare a sufficienza i dati, questi sono consegnati alla vista utilizzando il metodo del controller set(). Anche in questo punto possono essere usati controller callback prima che i dati siano spediti. La logica della vista viene a questo punto eseguita, ciò può includere l'utilizzo di diversi element e/o helper. Per default una vista viene renderizzata insieme ad un layout.
  8. Controller callback aggiuntivi (come afterFilter) possono essere applicati. Il codice della vista completo e renderizzato viene inviato al browser di Ricardo.