Bonjour,

Je débute avec CakePHP. Pour l'instant vu les premiers tutoriels vidéos et j'aimerais bien apprendre à mieux utiliser ce framework. Cependant, découvrant également le fonctionnement de l'architecture MVC, certains points m'échappent. Pour commencer, je voulais créer un site très simple : page d'accueil, page "qui sommes-nous" et une page de contact avec un formulaire simple. Et là, voilà les questions que je me suis posées :

  1. Pour mes 2 pages "statiques" (accueil, qui sommes-nous), est-ce juste de simplement créer un controller PostsController.php, la vue correspondante et la route au fichiers "routes.php".
    Voici le contenu de mon fichier PostsController.php.

    <?php
    class PostsController extends AppController {
    public function index() { // page d'accueil
    }
    public function a_propos() { // qui sommes-nous
    }
    }
    ?>

Y a-t-il une meilleure manière de procéder pour les pages statiques ?

  1. Pour ma page de contact, dois-je créer un "ContactsController.php" et les fichiers correspondants (vues, modèle) ou il faudrait faire différemment ? A ce que j'ai compris (je me trompe peut-être, il faut créer modèle+controller pour chaque table de la base de données ?!

Il me semble qu'avec ma procédure, le site peut être fonctionnel mais je doute du côté optimisation et clarté :-)

Merci d'avance pour les éventuelles réponses.

4 réponses


Nagase
Réponse acceptée

Je ne suis pas un expert mais à priori c'est dans le PagesController que ça ce passe.

public function display() {}

Et dans le routes.php

Router::connect('/', array('controller' => 'pages', 'action' => 'display'));

Pour ta page a propos tu créera une function about dans le PagesController .

public function about() {}

Et dans le route.php

Router::connect('/about', array('controller' => 'pages', 'action' => 'about'));

Après tu peut faire comme tu veut, créer un controller et la route qui va avec mais c'est comme ça que c'est fait par défaut (et peut être par convention) !

Pour ta seconde question tu va créer le controller contact qui recevra tes informations et enverra le mail, tu peut créer le modèle pour faciliter la validation des données , la vue n'est pas nécessaire si tu met ton formulaire dans ta page d'accueil , par contre tu en aura logiquement besoin si tu fait une page spécifique pour le formulaire ;)

Salut,

  1. Je n'ai pas trop fait de pages statiques, je préfère laisser d'autres personnes te conseiller

  2. Tu dois créer un Model Contact où tu écriras toutes tes opérations, c'est le cerveau de l'application.
    Dans l'idéal, le controller ContactsController ne sert qu'à appeler les fonctions du modèle via $this->Model->fonction() et envoyer les résultats à la vue via $this->set('variable de la vue',$variableDuController).
    Le controller, c'est la trame de l'application.

Piverte

kinkaz
Auteur

Merci Piverte ! Ca confirme bien ce que je pensais et je commence à comprendre la logique :-)

Je laisse encore donc la question 1 en suspens concernant les pages statiques.

Merci d'avance,

kinkaz

kinkaz
Auteur

Merci Nagase,

C'est surtout la convention qui m'intéressait (j'aime faire les choses proprement :)) et du coup ta réponse me convient parfaitement.

Merci encore à vous deux et bon week-end,

kinkaz