[Symfony] Action ou module
Salut j'étais habitué au MVC, modèle vue controlleur.
Mais la je lis ce tutoriel sur sympfony
http://c-maneu.developpez.com/tutorial/web/php/symfony/intro/#LI
Mais il parle d'action template module
Je cite
# Les modules : Ce sont des unités fonctionnelles' de votre applications. (Par exemple : clients, produits, commandes). C'est à ce niveau que vous allez travailler le plus !# Les actions et les templates : Les modules comportent des couples d'actions-templates. C'est l'application du pattern MVC, et également la séparation entre la partie « traitement » et la partie « affichage ». Toutes les opérations sur la base de données et les autres traitements (web services, ftp, mail, etc) sont réalisés dans le fichier d'actions (monModule/actions/action.class.php), c'est ensuite le fichier de template (monModule/templates/monActionSuccess.php) qui se charge du rendu graphique.
Et c'est marqué que les répertoires créer seront :
Réponses apportées à cette discussion
Un module c'est une partie du site. Un composant de ton application si tu préfères.
Dans le module tu as au minimum les répertoires :
- /actions qui contient le fichier actions.class.php qui lui même contient les méthodes à exécuter en fonction de l'Url appelée. C'est donc la partie "Contrôleur" du modèle MVC.
- /templates qui contient la liste des templates HTML associés à chaque action publiques du fichier actions.class.php. C'est donc la partie "Vue" du modèle MVC.
Tu peux également avoir d'autres répertoires optionnels comme :
- /i18n qui contient les dictionnaires de traduction propres au module dans le cas d'une application multilingue,
- /config qui contient des fichiers de configuration propre au module,
- /lib qui contient des classes de propres au bon fonctionnement du module. Dans ces classes, tu peux avoir des classes de modèle, donc appartenant à la couche "Modèle" de MVC.
Mais de manière générale, les classes de modèle se trouve plus haut dans le répertoire project_root/lib/model.
++
Ok donc il ya autant d'action que de page...
Mais apparement les classes sont déjà codée? car tu dis que /lib est optionnel.
Merci
Non il y'a une seule classe "moduleActions" par module dans laquelle tu déclares chaque méthode publique. Par exemple, si tu as un module "news", tu pourras créer une action "executeList()" et "executeRead()". La première te permettra de créer la page qui liste les news et la seconde te permettra de lire une news. Tu appelles ces deux méthodes dans le navigateur par l'url suivante :
http://www.tonsite.com/index.php/news/list
http://www.tonsite.com/index.php/news/read
Les classes de base du modèle sont auto générées par l'ORM (Propel par défaut ou Doctrine) et se trouvent dans le répertoire project_root/lib/model
++
Ok je vais voir à étudier tout cela.
Mais je croyais que le controleur c'était justement des appels à des méthodes.
Alors que la tu créer des controleurs avec des méthodes .
Merci
Hum, comment ça ?
Bah en gros pour moi le controleur c'est :
<?php
if(isset($_POST['news'])) {
$news = new NewsManager();
$news->addNews($_POST['news']);
}
?>
et le modèle c'est la classe NewsManager !
Mais bon faut que je me penche dessus plus en détail :P
Sinon elle sort quand la traduction du livre de symfony en francais?
Merci
Dans symfony, le contrôleur (du moins sa partie élémentaire puisque c'est plus complexe que ça) ce n'est ni plus ni moins qu'une méthode d'une classe qui est appelée, et qui prend en paramètre un objet sfRequest.
Oui mais dans le controleur c'est la que tu fais les tests en dur du style
if(isset($_POST))
//Appel de la méthode
??
merci
Oui et non !