Vous n'avez pas besoin de créer un contrôleur pour tout. En fait, vous ne devriez pas, parce qu'il y a de meilleurs moyens de contourner cela. Les pages les plus statiques que vous avez, le plus hors de portée qu'il peut obtenir.
pour les pages statiques
Copie pages_controller.php du gâteau/libs/dossier contrôleur vers votre application/dossier contrôleurs. Ajouter le morceau suivant de code à votre écran() Action:
function display() {
...
$page = Inflector::slug($page);
if (method_exists($this, $page)) {
$this->$page();
}
$this->render(join('/', $path));
return;
}
Ensuite, modifiez votre fichier routes.php pour ajouter les différentes pages statiques:
Router::connect('/about', array('controller' => 'pages', 'action' => 'display', 'about'));
Router::connect('/contact', array('controller' => 'pages', 'action' => 'display', 'contact'));
Maintenant, le formulaire de contact est statique page, mais a une certaine logique qui s'y rattachent. Ainsi, vous pouvez vous diriger vers votre PagesController et créer une action spécifique pour cette (ou toute autre page qui est non seulement statique):
function contact() {
if (!empty($this->data)) {
...
}
}
Fondamentalement, l'itinéraire dirige votre demande de page à l'action statique display()
du PagesController . L'action d'affichage vérifie si une méthode du même nom existe. Si c'est le cas, il exécute cette action et affiche l'affichage pages/{page} .ctp.
Pour les pages non statiques, par ex. Blog
Maintenant, cela a certainement besoin d'un modèle. En fait, plusieurs modèles (Post hasMany Comment, Post HABTM Tag). Afin de manipuler et d'accéder à ces différents modèles, il est préférable de placer le code dans un contrôleur séparé.
Beaucoup de gens aiment nommer leurs contrôleurs en fonction de leurs URL. Par exemple, ils nomment leur contrôleur comme BlogController s'ils veulent une URL telle que /blog
.
Une méthode que je préfère utilise le routage pour obtenir les URL que je veux, et garder les contrôleurs nommés selon les conventions de CakePHP.
Par exemple. Un PostsController contrôlerait le modèle Post et les modèles associés. Mais si je voulais que l'URL /blog
affiche une liste de tous les messages, j'écrirais une route pour la diriger vers /posts/index
.
Router::connect('/blog', array('controller' => 'posts', 'action' => 'index'));
Vous pouvez également avoir des itinéraires supplémentaires.Exemple: /blog/2010/06/10/whats-in-a-post
pour pointer vers /posts/view/
.
Encore une fois, ceci est juste un exemple de ce qui est possible. En fin de compte, vous devriez vous en tenir aux méthodes qui, selon vous, aident à garder votre code organisé pour vous et votre équipe.
... et je ne peux pas épeler 'organisation' pour merde lol – jason