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

Zend Framework PHP Discussion :

Application modulaire -> Soucis de compréhension


Sujet :

Zend Framework PHP

  1. #1
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut Application modulaire -> Soucis de compréhension
    Bonjour à tous !

    Voilà j'ai vraiment du mal à saisir les chemins dans les modules de Zend Framework.

    Voici mon arbo :
    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
    application
        config
        modules
            admin
               controller
               forms
               models
               view
               Bootstrap.php
            default
               controller
               forms
               models
               view
               Bootstrap.php
        Bootstrap.php
    Dans mon config/application.ini :
    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
    [production]
    includePaths.library                    = APPLICATION_PATH "/../library"
     
    bootstrap.path                          = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class                         = "Bootstrap"
    appnamespace                            = "Application"
     
    autoloaderNamespaces[]                  = "Nowis_"
     
    resources.frontController.moduleDirectory   = APPLICATION_PATH "/modules"
    resources.modules[] = ""
     
     
    resources.layout.layout                 = "layout"
    resources.layout.layoutPath             = APPLICATION_PATH "/layouts"
     
    resources.view.encoding                 = "UTF-8"
    Mon bootstrap général :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
        class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
        {
            public function run()
            {
                Zend_Registry::set('config', new Zend_Config($this->getOptions()));
                parent::run();
            }
       }
    Ainsi que mes deux bootstrap modulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
        {
     
        }
     
    class Default_Bootstrap extends Zend_Application_Module_Bootstrap
        {
     
        }
    Tout fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://localhost/monsite/public/
    http://localhost/monsite/public/admin/
    Mais comme je comprends moyennement ce que fait, comment nommer mes class form, mes models, je préfére demander des explications pour bien programmer.

    Merci à celui qui m'expliquera en détails et m'aiguillera sur les décisions à faire pour les nommages.

  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 : 39
    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
    Bonjour,
    Tout d'abord l'architecture de tes dossiers semble correcte, ton application.ini également.

    Pour ton bootstrap principal cependant, je te conseille de ne pas toucher à la méthode run à moins que cela soit vraiment nécessaire.
    Là il te suffit de créer une méthode _initConfig() avec le contenu de ce que tu as mis dans le run.

    En suite je ne sais pas ce que tu veux exactement comme explication mais pour le nommage c'est ainsi:
    Si tu es dans le module admin:
    - Admin_Model_Toto
    - Admin_TotoController
    - Admin_Form_Toto
    Si tu es dans default:
    - Default_Model_Toto
    - TotoController Default_TotoController (seulement pour le module default)
    - Default_Form_Toto

    Mais le dossier application est également considéré comme un module, du coup tu peux mettre un dossier models direct dans application et nommer tes classes :
    - Application_Model_Toto


    - Admin_Form_Toto

  3. #3
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Salut,

    Merci pour cette réponse.

    Cependant je butte sur la fonction : _initConfig()

    J'ai crée mon autoloader dans mon Bootstrap principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    protected function _initAutoload() 
            {
                $autoloader = new Zend_Application_Module_Autoloader(array(
                    'namespace' => '',
                    'basePath'  => APPLICATION_PATH
                ));
                return $autoloader;
            }
    Mais je ne comprends toujours pas comment configurer mes deux modules (en gros dire qu'il y a le module Admin et le module Default). Car actuellement, la fonction _initAutoload est bien appelé, mais aucun aperçu du controller défault ou admin...

  4. #4
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Yo !

    Citation Envoyé par Nowwis Voir le message
    Mais je ne comprends toujours pas comment configurer mes deux modules (en gros dire qu'il y a le module Admin et le module Default). Car actuellement, la fonction _initAutoload est bien appelé, mais aucun aperçu du controller défault ou admin...
    Pour déclarer tes modules à ton appli', tu peux utiliser la méthode _initDefaultNamespace() dans ton bootstrap principal (tiens, j'ai les mêmes modules que toi, joyeux hasard, mon projet date de l'année dernière ^^) :

    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
    23
    protected function _initDefaultNamespace() {
        $moduleLoaders = array();
     
        // Default.
        $default = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath'  => APPLICATION_PATH . '/modules/default',
        ));
        $default->addResourceType('lib', 'library/', 'Lib');
     
        // Admin.
        $admin = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Admin_',
            'basePath'  => APPLICATION_PATH . '/modules/admin',
        ));
        $admin->addResourceType('lib', 'library/', 'Lib');
     
        // Ajout des namespaces.
        $moduleLoaders['Default'] = $default;
        $moduleLoaders['Admin'] = $admin;
     
        return $moduleLoaders;
    }
    En espérant t'avoir aidé.

    DarkSeiryu

  5. #5
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Salut DarkSeiryu,

    Bon effectivement je comprends mieux l'initialisation, en revanche ça ne fonctionne pas..

    Cela ne redirige pas vers mon default/ et le Bootstrap des deux modules n'est pas initialisé...

    As-tu une idée ?

  6. #6
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Hum, j'ai l'impression que ton application n'initialise pas ton application.ini...

    Essaie de rajouter ça dans ton Bootstrap principal :
    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
    /**
    	 * Récupère les données du application.ini.
    	 * @return Zend_Config la config' de l'appli'
    	 */
    	protected function _initConfiguration(){
            $config = new Zend_Config($this->getOptions(), APPLICATION_ENV);
     
            $this->_config 		= $config;
            $this->_registry	= Zend_Registry::getInstance();
     
            // Ajout de la config' dans le Zend_Registry.
            // Permet d'utiliser la config' partout dans l'appli' (utile si des infos sont sotckées dans le application.ini) grâce à ce code : $config = Zend_Registry::get('config')
            $this->_registry->set('config', $config);
     
            return $config;
        }

  7. #7
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Tester mais ça ne fonctionne toujours pas

    Voici mes Zend_Debug :

    $this->getOptions()
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    array
      'includePaths' => 
        array
          'library' => string 'D:\Projet\Web\monsite\application/../library' (length=51)
      'bootstrap' => 
        array
          'path' => string 'D:\Projet\Web\monsite\application/Bootstrap.php' (length=54)
          'class' => string 'Bootstrap' (length=9)
      'appnamespace' => string 'Application' (length=11)
      'autoloaderNamespaces' => 
        array
          0 => string 'Nowis_' (length=6)
      'resources' => 
        array
          'frontController' => 
            array
              'moduleDirectory' => string 'D:\Projet\Web\monsite\application/modules' (length=48)
          'db' => 
            array
              'adapter' => string 'pdo_mysql' (length=9)
              'params' => 
                array
                  ...
              'isDefaultTableAdapter' => string '1' (length=1)
          'layout' => 
            array
              'layout' => string 'layout' (length=6)
              'layoutPath' => string 'D:\Projet\Web\monsite\application/layouts' (length=48)
          'view' => 
            array
              'encoding' => string 'UTF-8' (length=5)
      'phpSettings' => 
        array
          'display_startup_errors' => string '0' (length=1)
          'display_errors' => string '0' (length=1)
    Celui qui me parait "vide" : $config :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    object(Zend_Config)[11]
      protected '_allowModifications' => boolean true
      protected '_index' => int 0
      protected '_count' => int 6
      protected '_data' => 
        array
          'includePaths' => 
            object(Zend_Config)[9]
              protected '_allowModifications' => boolean true
              protected '_index' => int 0
              protected '_count' => int 1
              protected '_data' => 
                array
                  ...
              protected '_skipNextIteration' => null
              protected '_loadedSection' => null
              protected '_extends' => 
                array
                  ...
              protected '_loadFileErrorStr' => null
          'bootstrap' => 
            object(Zend_Config)[10]
              protected '_allowModifications' => boolean true
              protected '_index' => int 0
              protected '_count' => int 2
              protected '_data' => 
                array
                  ...
              protected '_skipNextIteration' => null
              protected '_loadedSection' => null
              protected '_extends' => 
                array
                  ...
              protected '_loadFileErrorStr' => null
          'appnamespace' => string 'Application' (length=11)
          'autoloaderNamespaces' => 
            object(Zend_Config)[8]
              protected '_allowModifications' => boolean true
              protected '_index' => int 0
              protected '_count' => int 1
              protected '_data' => 
                array
                  ...
              protected '_skipNextIteration' => null
              protected '_loadedSection' => null
              protected '_extends' => 
                array
                  ...
              protected '_loadFileErrorStr' => null
          'resources' => 
            object(Zend_Config)[6]
              protected '_allowModifications' => boolean true
              protected '_index' => int 0
              protected '_count' => int 4
              protected '_data' => 
                array
                  ...
              protected '_skipNextIteration' => null
              protected '_loadedSection' => null
              protected '_extends' => 
                array
                  ...
              protected '_loadFileErrorStr' => null
          'phpSettings' => 
            object(Zend_Config)[17]
              protected '_allowModifications' => boolean true
              protected '_index' => int 0
              protected '_count' => int 2
              protected '_data' => 
                array
                  ...
              protected '_skipNextIteration' => null
              protected '_loadedSection' => null
              protected '_extends' => 
                array
                  ...
              protected '_loadFileErrorStr' => null
      protected '_skipNextIteration' => null
      protected '_loadedSection' => null
      protected '_extends' => 
        array
          empty
      protected '_loadFileErrorStr' => null

    En plus, je te rajoute le public/index.php (une partie)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Create application, bootstrap, and run
    $application = new Zend_Application(
        APPLICATION_ENV,
        APPLICATION_PATH . '/configs/application.ini'
    );
    $application->bootstrap()
                ->run();
    Je pense que c'est "bon" mais apparemment non


    EDIT :

    J'ai réussi à faire fonctionner l'appli :
    - J'ai commencé par afficher les erreurs PHP, qui m'ont indiqué un mauvais chemin pour le layoutPath.
    - J'ai donc modifié mon application.ini pour définir :
    resources.layout.layoutPath = APPLICATION_PATH "/modules/default/layouts"

    Mon controller index de Défault est bien appelé, uniquement si je l'appelle "IndexController" et non "Default_IndexController". Ca me va, mais j'aimerais savoir pourquoi étant donné que c'est écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $default = new Zend_Application_Module_Autoloader(array(
                            'namespace' => 'Default_',
                            'basePath' => APPLICATION_PATH.'/modules/default',
                        ));
    ça commence à prendre forme J'suis content, merci de m'aider !

  8. #8
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Mon controller index de Défault est bien appelé, uniquement si je l'appelle "IndexController" et non "Default_IndexController". Ca me va, mais j'aimerais savoir pourquoi étant donné que c'est écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $default = new Zend_Application_Module_Autoloader(array(
                            'namespace' => 'Default_',
                            'basePath' => APPLICATION_PATH.'/modules/default',
                        ));
    En fait, dans une appli' modulaire avec Zend Framework, pour le module Default (qui est obligatoire), tu n'as pas à spécifier le nom du module dans le nom de ta classe pour les controllers (et uniquement pour eux).

    Citation Envoyé par Nowwis Voir le message
    ça commence à prendre forme J'suis content, merci de m'aider !
    Pas de souci.

    Après, pour revenir à ta question de base sur le nommage de tes classes dans une appli' modulaire, ça se passe comme ça :
    - Formulaires (stockés dans un dossier "forms") : NomModule_Form_NomClasse.php
    - Models : NomModule_Model_NomClasse.php

    Et ce sera toujours pareil si jamais tu rajoutes des dossiers dans tes modules. Par exemple, j'ai un dossier "library" dans mes modules (tu les indiques au framework grâce au code ci-dessous dans ton Bootstrap (tu l'as dans la fonction _initDefaultNamespace() que je t'ai donné avant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Le premier paramètre de addResourceType indique le type de ressource, le second indique le chemin relatif et le dernier représente un namespace que tu donnes à ta ressource.
    $default->addResourceType('lib', 'library/', 'Lib');
    Et donc, si je mets une classe dans mon dossier library, elle se nommera : NomModule_Lib_MaClasse.php.

  9. #9
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Ok ça roule je pige mieux

    Encore deux petite questions qui vont surement se lier :

    - Mes deux boostrap modulaire ne sont pas initialiser (c'est pas normal ^^). J'ai fait une fonction _initTest() avec un echo et il n'est jamais afficher.

    Mon Bootstrap de défault doit s'appeler Default_Bootstrap ou Bootstrap ?

    - De même, comme définir le dossier layout selon le module ?
    Quelque recherche ne m'ont pas permis de trouver expréssement mon besoin, j'ai essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $default = new Zend_Application_Module_Autoloader(array(
                            'namespace' => 'Default_',
                            'basePath' => APPLICATION_PATH.'/modules/default',
                            'resources' => array('layout' => array('layout' => 'layout',
                                                                  'layoutPath' => APPLICATION_PATH.'/modules/default/layouts'))
                        ));
    Mais en vain C'était pourtant une bonne idée mais non

  10. #10
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    - Mes deux boostrap modulaire ne sont pas initialiser (c'est pas normal ^^). J'ai fait une fonction _initTest() avec un echo et il n'est jamais afficher.

    Mon Bootstrap de défault doit s'appeler Default_Bootstrap ou Bootstrap ?
    Default_Bootstrap.

    Après, j'suis pas sur que ta méthode _initTest() te permette vraiment de tester si tes Bootstrap de modules sont initialisés ou non.
    J'ai toujours bossé avec des Bootstrap de module vides donc ce que je vais te dire est peut-être une connerie. ^^ A mon avis, tu ne dois te servir de ces Bootstrap que pour définir certaines choses propres à ce dernier (une base de données à n'utiliser que dans ce dernier par exemple).

    Citation Envoyé par Nowwis Voir le message
    - De même, comme définir le dossier layout selon le module ?
    Essaie avec la méthode que je t'ai donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $default->addRessourceType('layout', '/layout', 'Lay');
    Et ajoute ça dans ton Bootstrap de module :
    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
    protected function _initView() {
     
    //    	Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
     
            $view = new Zend_View();
            $view->setEncoding('ISO-8859-1');
     
            $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
            Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
     
            Zend_Layout::startMvc(array(
            	'layout' => 'layout',
            	'layoutPath' => APPLICATION_PATH . "/modules/default/layout/")
            );
    		$mvc = Zend_Layout::getMvcInstance();
     
    		$this->_registry->set('mvc', $mvc);
     
            return $view;
        }
    Mais je ne garantis rien. A la base, mon code c'est ça (dans mon Bootstrap principal) :
    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
    protected function _initView() {
     
    //    	Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
     
            $view = new Zend_View();
            $view->setEncoding('ISO-8859-1');
     
            $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
            Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
     
            Zend_Layout::startMvc(array(
            	'layout' => 'layout',
            	'layoutPath' => APPLICATION_PATH . "/layouts/scripts/")
            );
    		$mvc = Zend_Layout::getMvcInstance();
     
    		$this->_registry->set('mvc', $mvc);
     
            return $view;
        }
    Qui me permet d'indiquer le chemin vers mon layout.phtml. Mais je n'ai jamais fait de changement de layout en fonction de mon module donc j'suis vraiment pas sur de moi...

    EDIT : euh j'ai mis l'encodage de la view en ISO, mais si t'es en UTF-8 mets bien UTF-8.

  11. #11
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Bon ta méthode n'a pas fonctionné, et j'ai réfléchi pour m'adapter.

    J'ai donc créé un dossier layouts à la racine d'application (hors des modules donc) et j'ai appelé mes layouts comme mes modules (layouts/admin.phtml et layouts/default.phtml).

    J'ai hérité le Zend_Controller_Action en Nowis_Controller_Action,
    et dans la méthod init de cette class, j'ai mis simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function init()
            {
                $module = $this->_request->getParam('module');
                $this->_helper->layout->setLayout($module);
            }
    Si ça peut servir à quelqu'un...

  12. #12
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Ah ben tu viens de m'apprendre un truc tiens, c'pas mal ce que t'as fait. ^^

    Bonne continuation.

    DarkSeiryu

  13. #13
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Oui je pense pas être mauvais mais il me manque pas mal de ressource... J'vais m'acheter un bon gros livre

    En tout cas merci beaucoup, c'est parfait j'ai bien saisis les choses

  14. #14
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2002
    Messages : 62
    Par défaut
    Bonjour!

    Je remonte ce fil d'il y a quelques mois parce que je rencontre un problème avec une application modulaire fraîchement installée (Zend 1.11.12).
    J'ai exactement la même arborescence (cf post 1) avec deux modules : "default" et "admin".
    Voici le bootstrap principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    	protected function _initAutoLoader() {
    		$autoloader = Zend_Loader_Autoloader::getInstance();
    	}
    }
    Voici mes bootstrap modulaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    } 
     
    <?php
     
    class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    }
    Voici le contenu de mon fichier application.ini
    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
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    appnamespace = "Application"
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] = ""
    resources.frontController.params.displayExceptions = 0
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1
    Ci-dessous le contenu du fichier IndexController.php du module "admin"
    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
    <?php
     
    class Admin_IndexController extends Zend_Controller_Action
    {
     
        public function init()
        {
            /* Initialize action controller here */
        	parent::init();
        	$models = $this->_request->getParam('module').'/models';
        	set_include_path('../application/modules/'.$models . PATH_SEPARATOR . get_include_path());
        }
     
        public function indexAction()
        {
            // action body
        }
     
     
    }
    et celui du module "default"
    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
    <?php
     
    class IndexController extends Zend_Controller_Action
    {
     
        public function init()
        {
            /* Initialize action controller here */
        	parent::init();
        	$models = $this->_request->getParam('module').'/models';
        	set_include_path('../application/modules/'.$models . PATH_SEPARATOR . get_include_path());
        }
     
        public function indexAction()
        {
            // action body
        }
     
     
    }
    J'arrive à atteindre la page http://localhost/portail/public/
    Mais lorsque j'essaie d'atteindre la page http://localhost/portail/public/admin/, j'ai le message d'erreur 404 suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The requested URL /portail/public/admin/ was not found on this server.
    Je ne comprends pas d'où vient l'erreur.
    Merci pour votre aide...

Discussions similaires

  1. Problème de refresh dans une application modulaire
    Par TigrouMeow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/10/2007, 15h06
  2. Réponses: 7
    Dernier message: 16/06/2007, 12h03
  3. Build / application modulaire
    Par Oscar Hiboux dans le forum Maven
    Réponses: 1
    Dernier message: 05/12/2006, 17h38
  4. Comment faire une application modulaire
    Par JuJu° dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/08/2006, 11h35
  5. Petit soucis de compréhension
    Par AlexB59 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/10/2005, 10h18

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