3.5.1 Introduction

Un contrôleur (controller) est utilisé pour gérer l'aspect logique de votre application. En règle générale les contrôleurs sont utilisés pour gérer la logique d'un seul modèle. Par exemple, si aviez à construire un site pour une boulangerie en ligne, vous auriez sûrement un contrôleur "Recettes" et un contrôleur "Ingrédients" vous permettant de gérer vos ingrédients et recettes. Avec CakePHP, les contrôleurs portent le nom de leur modèle correspondant, au pluriel.

Le modèle Recette est pris en charge par le Contrôleur Recettes, le modèle Ingredient par le Contrôleur Ingrédients, et ainsi de suite.

Les contrôleurs de votre application héritent de la classe CakePHP "AppController", qui hérite elle-même de la classe "Controller" et qui fait partie de la librairie centrale de CakePHP. La classe AppController peut être redéfinie dans /app/app_controller.php et doit contenir les méthodes partagées par tous les contrôleurs de votre application.

Les contrôleurs peuvent inclure un nombre quelconque de méthodes. Ces méthodes sont généralement appelées "actions" car elles correspondent la plupart du temps à une seule action logique (ex: afficher, créer, modifier, supprimer, etc.). Les méthodes d'un contrôleur sont donc appelées actions et sont utilisées pour afficher leurs vues respectives. Le dispatcher (répartiteur) de CakePHP appelle ces actions quant l'adresse URL demandée correspond à l'action d'un contrôleur. Si l'on se réfère ainsi à notre exemple précédent de boulangerie en ligne, notre contrôleur "Recettes" contiendra sûrement les actions "voir()", "partager()" et "rechercher()". Ce contrôleur devra se situer dans /app/controllers/recettes_controller.php et contenir :

# /app/controllers/recettes_controller.php
<?php
    class RecettesController extends AppController {
        function voir($id) {
            //on insérera ici la logique propre à l'action
        }

        function partager($client_id, $recette_id) {
             //on insérera ici la logique propre à l'action
        }

        function rechercher($requette) {
             //on insérera ici la logique propre à l'action
        }
    }

?>
  1. # /app/controllers/recettes_controller.php
  2. <?php
  3. class RecettesController extends AppController {
  4. function voir($id) {
  5. //on insérera ici la logique propre à l'action
  6. }
  7. function partager($client_id, $recette_id) {
  8. //on insérera ici la logique propre à l'action
  9. }
  10. function rechercher($requette) {
  11. //on insérera ici la logique propre à l'action
  12. }
  13. }
  14. ?>

Afin d'utiliser tout le potentiel d'un contrôleur dans votre application, nous allons aborder ici quelques-uns des principaux attributs et méthodes offerts par les contrôleurs de CakePHP.