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 :

MVC : n modules avec 1 models


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut MVC : n modules avec 1 models
    Bonjour,

    J'ai une application comportant plusieurs modules qui partagent le même répertoire Model (pour mutualiser les classes métiers entre les différents modules).

    Voici l'arborescence :

    <Racine-application>
    ---<models>
    ---<applications>
    ------<module1>
    ---------<controllers>
    ---------<views>
    ------<module2>
    ---------<controllers>
    ---------<views>
    ------<module3>
    ---------<controllers>
    ---------<views>

    Mon code est le suivant :

    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
     
    <?php
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/Paris');
     
    set_include_path('.' . PATH_SEPARATOR . './library'
    .PATH_SEPARATOR . './models/'
    .PATH_SEPARATOR . get_include_path());
     
    include "./library/Zend/Loader.php";  
     
    Zend_Loader::loadClass('Zend_Controller_Front');
    Zend_Loader::loadClass('Zend_Controller_Request_Http');
     
    // setup controller   
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./applications');
     
    // run!
    $frontController->dispatch();
    ?>
    Mais lorsque je visualise dans IE à l'adresse http://localhost/module1/index/, j'ai l'erreur suivante :


    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (module1) C:\wamp\www\library\Zend\Controller\Dispatcher\Standard.php:193 Stack trace: #0 C:\wamp\www\library\Zend\Controller\Front.php(911): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\index.php(21): Zend_Controller_Front->dispatch() #2 {main} thrown in C:\wamp\www\\library\Zend\Controller\Dispatcher\Standard.php on line 193


    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    Tu dois spécifier au routage que tu utilises une structure modulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $router = $frontController->getRouter();
    $router->addRoute('mod', new Zend_Controller_Router_Route(':module/:controller/:action/*'));
    Puis spécifier les modules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $frontController->setControllerDirectory(array(
        'module1' => './application/module1/controllers/',
        'module2' => './application/module2/controllers/'
    ));
    // spécifier le module par défaut
    $frontController->setDefaultModule('module1');
    $frontController->setDefaultControllerName('index');
    $frontController->setDefaultAction('index');
    Ensuite tes controlleur dans les modules doivent être préfixer par le nom du module comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    Zend_Loader::loadClass('Zend_Controller_Action');
    class Module1_IndexController extends Zend_Controller_Action
    {
        public function indexAction()
        {
     
        }
        // etc...
    }
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Merci bcp!

    Ca marche!

    A bientôt!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modules avec struts
    Par ghenry dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/07/2006, 11h59
  2. Problèmes d'affiche du header de mon JTable avec un Model
    Par Baptiste Wicht dans le forum Composants
    Réponses: 16
    Dernier message: 08/02/2006, 18h37
  3. Probleme compilation module avec borland
    Par frtest dans le forum Langage
    Réponses: 1
    Dernier message: 27/01/2006, 12h03
  4. Connaître la taille d'un module avec une macro VBA ou autre
    Par beegees dans le forum Général VBA
    Réponses: 15
    Dernier message: 22/11/2005, 09h47
  5. [MVC]Modélisation POO avec BD
    Par fremsoi dans le forum MVC
    Réponses: 1
    Dernier message: 08/11/2005, 13h53

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