3.5.1 Introductie

Een controller wordt gebruikt om de logica van je applicatie te beheren. Het meest voorkomende is dat controllers worden gebruikt om de logica te beheren voor één enkel model. Bijvoorbeeld, bij het bouwen van een website voor een online bakkerij kun je een ReceptenController en een IngredientenController hebben om respectievelijk je recepten en hun ingrediënten te beheren. In CakePHP zijn controllers vernoemd naar het model dat ze afhandelen, in meervoudsvorm.

Het Recepten model wordt afgehandeld door de ReceptenController, het Product model wordt afgehandeld door de ProductenController, enzovoorts.

Je applicatie's controllers zijn klassen die de CakePHP AppController uitbreiden, welke op zijn beurt weer de core Controller class uitbreid. De AppController klasse kun je definiëren in /app/app_controller.php en dient alleen methoden te bevatten welke gedeeld worden over alle controllers van je applicatie. Deze breid de Controller klasse uit welke een standaard CakePHP library is.

Controllers kunnen een aantal methoden bevatten waarna over het algemeen als acties naar gerefereerd wordt. Acties zijn controller methoden welke gebruikt worden om views weer te geven. Een actie is één enkele methode van een controller. CakePHP's dispatcher roept de actie aan bij een inkomend verzoek waarvan de URL overeenkomt met een controller's actie. Om terug te komen op ons online bakkerij voorbeeld, onze ReceptenController kan de methoden view(), share() en search() bevatten. De controller zou dan te vinden zijn in /app/controllers/recepten_controller.php en zou bevatten:

    <?php
    
    # /app/controllers/recepten_controller.php

    class ReceptenController extends AppController {
        function view($id)     {
            //actie logica hier..
        }

        function share($klant_id, $recept_id) {
            //actie logica hier..
        }

        function search($query) {
            //actie logica hier..
        }
    }

    ?>
  1. <?php
  2. # /app/controllers/recepten_controller.php
  3. class ReceptenController extends AppController {
  4. function view($id) {
  5. //actie logica hier..
  6. }
  7. function share($klant_id, $recept_id) {
  8. //actie logica hier..
  9. }
  10. function search($query) {
  11. //actie logica hier..
  12. }
  13. }
  14. ?>

Om een controller effectief in je applicatie te kunnen gebruiken zullen we nu wat kern attributen en methoden bespreken welke te vinden zijn in CakePHP's controllers.