2.4.3 Convenzioni Controller
I nomi per le classi dei controlle sono plurali, CamelCased e finiscono in Controller, PeopleController e LatestArticlesController sono tutti esempi di nomi di controller che rispettano le convenzioni sui nomi.
La prima funzione che scrivete per un controller dovrebbe essere la funzione index(). Quando una richiesta specifica un controller ma non una azione, il comportamento di default di CakePHP è quello di renderizzare la funzione index() del controller stesso. Per esempio, una richiesta a
http://www.example.com/apples/ mappa una chiamata alla funzione index() di ApplesController, mentre http://www.example.com/apples/view/ mappa una chiamata alla funzione view() di ApplesController.
Potete anche cambiare la visibilità delle funzioni in CakePHP precedendo il nome della funzione stessa con il carattere di sottolineatura. Se una funzione in un controller è preceduta da un carattere di sottolineatura, la funzione non sarà raggiungibile via-web, ma resterà comunque disponibile per uso interno. Per esempio:
<?php
class NewsController extends AppController {
function latest() {
$this->_findNewArticles();
}
function _findNewArticles() {
//Logic to find latest news articles
}
}
?>
<?phpclass NewsController extends AppController {function latest() {$this->_findNewArticles();}function _findNewArticles() {//Logic to find latest news articles}}?>
Mentre la pagina http://www.example.com/news/latest/ sarà accessibile all'utente come di solito, tendando di accedere alla pagina http://www.example.com/news/_findNewArticles/ si riceverà un errore, perchè la funzione è preceduta da un carattere di sottolineatura.
2.4.3.1 URL Considerations for Controller Names
Come abbiamo appena visto, singole parole del controller mappano facilmente un semplice indirizzo URL minisculo. Per esempio, ApplesController (definito nel file 'apples_controller.php') potrà essere visitato all'indirizzo http://example.com/apples.
Parole multiple del controller mappano un cameBacked URL tenendo la forma plurale. Per esempio, RedApplesController (red_apples_controller.php) mapperà l'indirizzo http://example.com/redApples e OperatingSystemsController (operating_systems_controller.php) mapperà http://example.com/operatingSystems.
