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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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;
        }

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