Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-06-2009 00:51:02

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

[résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

Bonjour,

J'ai débuté il y a environ 2 mois avec la version 1.7 et je souhaite faire évoluer mon application vers la 1.8 en utilisant Zend_Application.

J'ai beau lire et relire la doc, je n'ai pas compris comment déclarer mes modules.

L'architecture est la suivante :

Code:

MonSite
   |
   -- application
   |    |
   |    -- Default
   |    |  |
   |    |  --/controllers
   |    |  -- etc...
   |    |
   |    -- Admin
   |       |
   |       --/controllers
   |       -- etc...
   |
   -- configs
   -- public
   -- library
   |
   -- modules
        |
        -- Module-A
        |   |
        |   -- controllers
        |   -- etc...
        |
        -- Module-B
        |   |
        |   -- controllers
        |   -- etc...
        |
        -- etc...

J'arrive très bien à faire fonctionner cette architecture sans Zend_Application, mais je souhaiterai évolué pour ne pas être coincé lors des prochaines versions.

Connaissez vous un tutoriel ou une doc en ligne sur le sujet ?

Ou bien pouvez vous m'aider ?

Merci d'avance wink

Dernière modification par patstey (12-06-2009 15:49:56)

Hors ligne

 

#2 01-06-2009 10:43:47

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

si tu veux j'ai trouvé comment faire, en regardant ici et ailleurs. Tu as plusieurs choses à faire:

dans ton application.ini rajoute ces lignes:

Code:

; Configuration de la gestion des modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

la première ligne sert à dire où sont situés tes divers modules, la seconde je croi (que quelqu'un me corrige si je dis une connerie) que c'est un tableau contenant les différents modules.

Ensuite dans chacun de tes modules mis à par le module défaut tu dois faire un nouveau bootstrap comme ceci:

Code:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{  
    protected function _initAutoload()
    {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Admin_',
        'basePath' => APPLICATION_PATH . '/modules/admin'));
        $moduleLoader->addResourceType('Models', 'models', 'Models');
        $moduleLoader->addResourceType('Forms', 'forms', 'Forms');
        return $moduleLoader;
    }
}

les deux lignes addResourceType() c'est pour qu'il me prenne bien en compte le dossier Models ainsi qu'un dossier Forms que j'ai rajouté pour stoqué mes formulaires.
Normalement après sa devrai marcher

Hors ligne

 

#3 02-06-2009 13:40:01

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: [résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

Merci throrin19 pour ta réponse.

Je n'ai pas vraiment expliqué l'objectif de la structure présentée dans mon premier post.

Je cherche à développer une application de base dans '/application' avec des modules (default, admin et peut-être d'autres à venir).

A cette application de base viennent (et viendront) se greffer des 'extensions' qui seront développées par d'autres utilisateurs et qui seront intégrées sous la forme de modules dans le dossier '/modules', un peu comme des 'plugins'.

En ZF 1.7 je déclarais mes modules dans mon index.php de la manière suivante :

Code:

$front->addControllerDirectory('./application/default/controllers')
          ->addControllerDirectory('./application/admin/controllers','admin')
          ->addModuleDirectory('./modules');

J'ai enfin compris comment le faire en ZF 1.8.2 en utilisant Zend_Application. Voici mes codes pour ceux que cela intéresse :

Architecture :

Code:

MonSite
/application
    /default
        / .. 
        Bootstrap.php
    /admin
        / ..
        Bootstrap.php
/configs
    application.ini
/public
    / ..
    index.php
    .htaccess
/library
/modules
    /module1
        / ..
        Bootstrap.php
    /module2
        / ..
        Bootstrap.php

Modification de index.php :

ROOT_PATH est défini pour me simplifier la vie smile

BASE_URL : existe-t-il un moyen de l'extraire via une variable d'environnement ou $_SERVER[] ?

Code:

// Défini l'url de base
defined('BASE_URL')
    || define('BASE_URL', '/Monsite');

// Define path to 'root' directory
defined('ROOT_PATH')
    || define('ROOT_PATH', realpath(dirname(__FILE__) . '/..'));

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(ROOT_PATH . '/application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(ROOT_PATH . '/library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';  

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV, 
    ROOT_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

Dans 'application.ini'

Code:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = ROOT_PATH "/library"
bootstrap.path = APPLICATION_PATH "/default/Bootstrap.php"
bootstrap.class = "Bootstrap"

resources.frontController.baseUrl = BASE_URL

; déclaration des modules dans '/application'
resources.frontController.controllerDirectory.default = APPLICATION_PATH "/default/controllers"
resources.frontController.controllerDirectory.admin   = APPLICATION_PATH "/admin/controllers"

; déclaration du dossier des modules d'extension
resources.frontController.moduleDirectory = ROOT_PATH "/modules"
resources.modules[] = 

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Voilà ...
J'ai résolu mon problème initial.

Je suis ouvert à toutes suggestions d'amélioration de mon code wink

PatStey

Hors ligne

 

#4 19-06-2009 10:25:36

trusted
Nouveau membre
Date d'inscription: 19-06-2009
Messages: 1

Re: [résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

bonjours je debutant avec zendframe work je voudrait neanmoin creer une application de la meme architecture que patstey.
quelqu'un aurait un tutoriel pour moi. merci

Hors ligne

 

#5 21-06-2009 09:54:08

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: [résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

trusted a écrit:

bonjours je debutant avec zendframe work je voudrait neanmoin creer une application de la meme architecture que patstey.
quelqu'un aurait un tutoriel pour moi. merci

Salut,

Je te conseil de lire (et pourquoi pas réaliser) le quickstart du ZF. Il te permettra de voir les bases du framework.
Ensuite tu pourras t'attaquer à la définition de tes modules.
Lire et essayer de comprendre la doc sur les domaines que tu traites permettra aussi d'avancer.
Enfin il te faudra parfois regarder les codes sources du ZF pour comprendre certain fonctionnements.

Pour trouver des tuto => www.google.fr

PatStey

Hors ligne

 

#6 28-06-2009 11:55:08

yveson33
Membre
Lieu: bordeaux
Date d'inscription: 13-05-2008
Messages: 111
Site web

Re: [résolu][Zend_Application][ZF 1.8.2] Comment déclarer mes modules ?

l'autre solution il me semble est de créer tes deux modules frontend et backend et ensuite modifier le fichier application?ini et specifier le module par defaut donc frontend. et le tour est jouer.Maiis c'est pas ce que la doc  suggere donc c'est a toi de faire le choix et c'est la philosophie de zend

Dernière modification par yveson33 (28-06-2009 12:15:56)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages