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 :

Modifier l'arborescence MVC


Sujet :

MVC PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut Modifier l'arborescence MVC
    Bonjour

    Pour l'utilisation du MVC avec ZF on parle la pluspart du temp d'une arborescence de répertoires comme suit :

    /application
    ........../controllers
    ........../models
    ........../views

    On initialise ensuite le frontcontroller comme suit :
    $frontController->setControllerDirectory('./application/controllers');

    Ok mais c'est pas très facile pour déployer des modules basés sur ce MVC. (si on considère par exemple qu'un module serait Article (pour une gestion d'articles) et comporterait son controleur, son model et ses vues).

    J'ai vue dans un tutorial, mais je n'arrive plus a mettre la main dessus qu'on peut avoir une arborescence du style :

    /application
    ........../module1
    ..................../controllers
    ..................../models
    ..................../views
    ........../module2
    ..................../controllers
    ..................../models
    ..................../views
    ...

    Qui me semble beaucoup plus pratique pour déployer des modules génériques.

    Qu'en pensez-vous ?

    Au passage si quelqu'un connait le tuto qui parle de ce type d'arborescence je suis preneur.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    J'ai trouvé comment faire pour mettre un tel système en place...

    A la méthode :
    $frontController->setControllerDirectory();

    Vous pouvez passer un tableau de répertoires avec tous vos repertoires controllers des modules ou utiliser la méthode :

    $frontController->addControllerDirectory();

    pour ajouter chaque répertoire controllers.

    Maintenant reste à savoir si les plus expérimentés pensent que c'est une bonne méthode

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut

    $controller = Zend_Controller_Front::getInstance()
    ->setDefaultModule("agent")
    ->addModuleDirectory('../app/modules')
    //->throwExceptions(true)
    ->registerPlugin(new Custom_Controller_Plugin_Auth($auth, $acl))
    ->dispatch();
    mes arborescences :

    /app

    ----/modules
    -------------/module1/
    ----------------------/controllers
    ----------------------/models
    -------------/module2/
    ---------------------/controllers
    ---------------------/models

    ----/views
    ----------/module1
    ----------/module2
    ----------header.tpl
    ----------footer.tpl
    ----------main.tpl

    Je trouve que c'est mieux de regrouper les vus

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 18
    Par défaut
    Citation Envoyé par robin_liu79
    $controller = Zend_Controller_Front::getInstance()
    ->setDefaultModule("agent")
    ->addModuleDirectory('../app/modules')
    //->throwExceptions(true)
    ->registerPlugin(new Custom_Controller_Plugin_Auth($auth, $acl))
    ->dispatch();
    Merci pour cette solution mais je ne pense pas qu'elle satisfait à mon besoin.

    En effet d'après la doc que j'ai lue :
    ...Un plugin est donc une classe dont les méthodes seront appelées a différents moments de la dispatch loop du controlleur frontal...
    Or c'est pas exactement ce que je recherche à faire, pour ma part un module est une classe de gestion complète d'une table article par exemple avec le MVC.

    Par contre cette solution risque d'être intéresante pour intégrer un parser de templates, enfin si j'ai bien compris son but ;-)

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Par défaut Une questions sur les modules ?
    Bonjour à tous.

    Je débute avec Zend et je rencontre une petite problématique. Aprés avoir par courru la documentation de zend sur les modules, je n'arrive toujours pas à les utilisés.

    mon arborescence est la suivante :

    /application
    ...../modules
    ........../module1
    ..................../controllers
    ......................../IndexController.php
    ..................../models
    ..................../views
    ........../module2
    ..................../controllers
    ..................../models
    ..................../views
    index.php

    et je spécifie au FrontController : $front->addModuleDirectory($_SERVER['DOCUMENT_ROOT'].'/application/modules')

    Cependant lors l'appel suivant http://localhost/application/module1 j'obtiens une pages blanche sachant que le fichier IndexController de module1 est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class IndexController extends Zend_Controller_Action
     {
     	public function indexAction()
     	{
            echo 'mon module1';
            }
    }
    Est-on obligé de spécifier setDefaultModule au FrontController ?

    PS: si je spécifie $front->setDefaultModule('module1') ce la fonction.

    Merci.

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Il me semble que le module par défaut est "index", donc si le tien s'appelle "module1" il faut en effet le dire à ZF

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Par défaut
    Citation Envoyé par esolarc Voir le message
    J'ai vue dans un tutorial, mais je n'arrive plus a mettre la main dessus qu'on peut avoir une arborescence du style :

    /application
    ........../module1
    ..................../controllers
    ..................../models
    ..................../views
    ........../module2
    ..................../controllers
    ..................../models
    ..................../views
    ...
    je ne sais pas si ca peut te servir. mais je pense que tu faisais reference a ca:
    http://framework.zend.com/manual/fr/...r.modular.html

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Par défaut
    petite question sur ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    docroot/
        index.php
    application/
        default/
            controllers/
                IndexController.php
                FooController.php
        blog/
            controllers/
                IndexController.php
            models/
            views/
        news/
            controllers/
                IndexController.php
                ListController.php
            models/
            views/
    le dossier public devrait bien etre placé comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    docroot/
        index.php
        public/
    	images/
    	scripts/
    	styles/
    application/
        default/
            controllers/
                IndexController.php
                FooController.php
        blog/
            controllers/
                IndexController.php
            models/
            views/
        news/
            controllers/
                IndexController.php
                ListController.php
            models/
            views/

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    cf. Rob Allen (public est au même niveau qu'application):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    zf-tutorial/
        /application
            /controllers
            /models
            /views
                /filters
                /helpers
                /scripts
        /library
        /public
            /images
            /scripts
            /styles

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Par défaut
    dans ce tuto, on met toute l'appli (meme tout le framework) dans le path du site.
    ca permet de le faire sur un mutualisé.
    mais dans la doc, c'est ecrit partout de mettre que le bootstrap dans le path du site: http://framework.zend.com/manual/fr/...r.modular.html
    l'idee etant de mettre le framework et le reste dans un coin moins accessible du serveur.

    d'ou ma question (a moins que je trompe sur ce que je viens d'ecrire): comment positionner le dossier /public/ qui contient les .css, les .js, ....

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Pourquoi ne pas utiliser le dossier "public" pour mettre le bootstrap en plus des images etc. ?

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Par défaut
    oui, ca semble bon aussi.
    soit mettre image/, scrtips/ et style/ dans la racine du site avec l'index.php.
    soit les mettre dans un dossier public, qui est lui au meme niveau que l'index.php.

    c'est ce que je pense faire, mais je voulais l'avis de gens qui font deja comme ca ! ou autrement

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut
    j'ai regroupé les vus, parce que j'ai utilisé smarty, et il y a des vus partagés par tout.

    Si non, c'est le même l'abora de bibile

Discussions similaires

  1. rsync modifier l'arborescence destination
    Par speedev dans le forum Réseau
    Réponses: 3
    Dernier message: 06/09/2012, 10h15
  2. Réponses: 0
    Dernier message: 25/02/2012, 16h00
  3. [Smarty] Arborescence MVC Smarty
    Par icl1c dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 01/03/2011, 12h38
  4. modifier une arborescence dynamique
    Par discusaigon dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/02/2009, 08h40
  5. Modifier l'arborescence d'Outlook à partir d'Exchange
    Par Hellnino18 dans le forum Exchange Server
    Réponses: 3
    Dernier message: 13/02/2009, 10h35

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