3.5.1 Úvodní seznámení
Controller je používán ke zpracování logiky částí Vaší aplikace. Nejčastěji jsou controllery využívány k řízení logiky jednoho modelu. Například pokud vytváříte web pro online pekárnu, můžete mít RecipesController a IngredientsController, které zpracovávají recepty a jejich ingredience. V CakePHP jsou controllery pojmenovány podle modelu, který spravují, v množném čísle.
Recipe model je spravován RecipesControllerem, Product model je spravován ProductsControlleem atd.
Controllery jsou třídy které jsou potomky třídy CakePHP AppController, která dále dědí od třídy Controller jádra CakePHP. Třída AppController může být předefinovaná v /app/app_controller.php a potom obsahuje metody, které jsou sdílené mezi všemi controllery aplikace. Rozšiřuje třídu Controller, která je ve standardní knihovně CakePHP.
Controllery mohou obsahovat libovolný počet metod, které obvykle odkazují na akce. Akce jsou metody controlleru, které slouží k zobrazení view. Akce je jedna metoda controlleru. Dispatcher CakePHP zavolá akci, když příchozí požadavek obsahuje v URL odkaz na tuto akci. Když se vrátíme k příkladu s online pekárnou, náš RecipesController může obsahovat view(), share() a search() akce. Controller nalezneme v /app/controllers/recipes_controller.php a obsahuje:
<?php
# /app/controllers/recipes_controller.php
class RecipesController extends AppController {
function view($id) {
//action logic goes here..
}
function share($customer_id, $recipe_id) {
//action logic goes here..
}
function search($query) {
//action logic goes here..
}
}
?>
<?php# /app/controllers/recipes_controller.phpclass RecipesController extends AppController {function view($id) {//action logic goes here..}function share($customer_id, $recipe_id) {//action logic goes here..}function search($query) {//action logic goes here..}}?>
Aby jste používali controllery efektivně, ukryjeme některé z atributů a metod poskytnutých CakePHP controllery.
