IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Compréhension organisation des modules et controllers


Sujet :

MVC PHP

  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut Compréhension organisation des modules et controllers
    Bonjour,

    Je débute tout juste sur le ZF. J'utilise le composant Zend_Application et la structure modulaire du zf et je m'interroge...
    Je ne suis pas sûr de bien comprendre l'objectif des modules. J'ai lu qu'ils servaient essentiellement à "isoler" des lots de fonctionnalités majeures les unes des autres, par exemple pour concevoir d'un côté le site Internet (module "default"), la version mobile (module "mobile"), une couche de webservices (module "webservice"), le backoffice etc...

    Ai-je déjà bien entendu ce point ou faut-il nuancer ?

    Le problème que je rencontre est le suivant :

    (je n'ai plus trop en tête la convention de nommage des controllers zend donc je passe outre ce point dans mon explication)

    Par habitude j'utilise des arborescences telles que :
    1 dossier = 1 lot de fonctionnalités (edit, add, del, list...) pour 1 objet (livre, utilisateur etc...)

    Mais d'après mes lectures, il n'est pas possible d'utiliser des sous-dossiers de controllers lorsqu'on utilise les modules, tels que par exemple :
    /modules/default/controllers/user/IndexController.php
    /modules/default/controllers/user/right/.../IndexController.php

    A priori, il faudrait que je crée autant de modules que de "lots" tel que :
    /modules/users/controllers/IndexController.php
    /modules/userRight/controllers/IndexController.php
    /modules/.../controllers/IndexController.php

    Ca n'est plus trop logique par rapport à ce que j'ai "cru" comprendre des modules car on aurait alors des "versions accessibles" de l'application au même niveau que des "fonctionnalités". Donc là je suis à peu près sûr d'avoir manquer quelque chose ... ou alors la réponse se trouve dans la possibilité de déclarer des répertoires de controllers depuis le bootstrap via addControllerDirectory().
    Cependant ça ne me plait pas trop car je veux un comportement automatisé.

    Pour résumé, le comportement que je recherche est le suivant :
    http://monsite.com/user/right/add=> /modules/default/controllers/user/right/add.php
    http://mobile.monsite.com/user/right/add => /modules/mobile/controllers/user/right/add.php (détecte le module mobile)
    http://monsite.com/mobile/user/right/add => /modules/mobile/controllers/user/right/add.php (idem)

    Pouvez-vous m'éclairer sur les modules et l'organisation des controllers svp ?
    Je me noie depuis 2 jours dans la doc du ZF, faramineuse-ment belle mais difficile à assimiler rapidement pour un non-initié.

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Bonsoir,
    Les modules te permettent de pourvoir séparer ton code comme tu l'entends.
    Cela permets si plusieurs personnes développent que chacun puisse travailler sur un module sans devoir toucher au code des autres.
    Tu as un module principale ou plutot deux (Application et Default)

    Les modules peuvent être ce que tu veux, par exemple le front et back office ou des fonctionnalités (webservice,newsletter,service,etc)

    Les sous dossiers dans les modules fonctionnent par exemple dans le dossier controllers , mais il faut commencer le dossier par une majuscule.

  3. #3
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Merci de ta réponse.
    Je précise un peu ma question :
    Quand tu dis que les modules peuvent-être ce que je veux, tu précises quand même qu'il semble s'agir de gros lots de fonctionnalités plus ou moins indépendants telles que backoffice, webservice etc...

    Maintenant je m'interroge sur une granularité plus fine de fonctionnalités appartenant à un ensemble telles que pour un module "backoffice" on peut avoir :
    - l'ajout d'une famille de légumes
    - l'ajout de tomates
    - l'ajout de saisons de plantation
    - etc..

    Ma question est de savoir si je peux créer dans ce module (backoffice), une arborescence par fonctionnalité tels que :
    modules/backoffice/controllers/Famille/addFamily...php
    modules/backoffice/controllers/Famille/editFamily...php
    modules/backoffice/controllers/Article/addArticle...php

    Et surtout de telle sorte que cette arborescence définie soit identique du côté des vues pour rester logique, tel que :
    modules/backoffice/views/templates/Famille/addFamily...tpl.php
    modules/backoffice/views/templates/Famille/editFamily...tpl.php
    modules/backoffice/views/templates/Article/addArticle...tpl.php

    Merci pour le coup de main !

  4. #4
    Membre expérimenté Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Par défaut
    Bonjour Speedev,

    Quand tu écris :
    Citation Envoyé par speedev
    modules/backoffice/controllers/Famille/addFamily...php
    modules/backoffice/controllers/Famille/editFamily...php
    modules/backoffice/controllers/Article/addArticle...php
    J'ai du mal à comprendre le "Famille" et "Article". Ce sont des dossier ? des Controllers ?

    Perso, je ferai cela :

    |--Application
    |----- Modules
    |--------- Backoffice
    |------------ FamilleController (actions : init, index, add, edit, del, ...)
    |------------ ArticleController (actions : init, index, add, ... )
    |------------ SaisonController (actions : ... )
    |--------- UnAutreModule
    |------------ UnController (actions : ... )
    ....

    La granularité que tu recherche se fera, par exemple, par le nombre de controller d'un module.

    Prenons un module qui correspond à la fonctionnalité journal. Cette fonctionnalité permet d'ouvrir un journal en cours, d'y ajouter des articles et de l'imprimer. Il est aussi possible d'ajouter des commentaires aux articles pour la versions en ligne du journal.

    |--- Journal
    |------ Controllers
    |---------- IndexController.php (actions : init, index, creerJournal, supprimerJournal, imprimerJournal)
    |---------- ArticleController.php (actions : init, index, creerArticle, modifierArticle, supprimerArticle)
    |---------- CommentaireController.php (actions : init, index, creerCommentaire, supprimerCommentaire)

    Note : si tu utilise zend_tool, il créera automatiquement une vue pour chaque action. Ces vues correspondent aux actions d'un controller et sont donc dans un dossier du même nom.

    |--- Journal
    |------ Controllers
    |---------- IndexController.php (actions : init, index, creerJournal, supprimerJournal, imprimerJournal)
    |---------- ArticleController.php (actions : init, index, creerArticle, modifierArticle, supprimerArticle)
    |---------- CommentaireController.php (actions : init, index, creerCommentaire, supprimerCommentaire)
    |------ Models
    |------ Views
    |---------- filters
    |---------- helpers
    |---------- scripts
    |------------- Index
    |---------------- index.phtml
    |---------------- creer-journal.phtml
    |---------------- supprimer-journal.phtml
    |---------------- imprimer-journal.phtml
    |------------- Article
    |---------------- index.phtml
    |---------------- creer-article.phtml
    |---------------- modifier-article.phtml
    |---------------- supprimer-article.phtml
    |------------- Commentaire
    |---------------- index.phtml
    |---------------- creer-commentaire.phtml
    |---------------- supprimer-commentaire.phtml

    C'est le genre de réponse que tu attendais ?

Discussions similaires

  1. Petit problème d'organisation des modules
    Par pelerin98 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/02/2015, 10h08
  2. [XL-2003] Organisation des Variables entre les modules d'un programme
    Par clems8076 dans le forum Conception
    Réponses: 2
    Dernier message: 14/09/2010, 22h08
  3. [1.x] Organisations des modules
    Par Ryo_Saeba dans le forum Symfony
    Réponses: 2
    Dernier message: 11/04/2008, 12h20
  4. [vba Excel ] Organisation Des Modules
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2007, 11h30
  5. [Struts][Module] : Organisation des sources
    Par anaon dans le forum Struts 1
    Réponses: 5
    Dernier message: 27/04/2006, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo