Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
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
Dernière modification par patstey (12-06-2009 15:49:56)
Hors ligne
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:
; 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:
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
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 :
$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 :
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
BASE_URL : existe-t-il un moyen de l'extraire via une variable d'environnement ou $_SERVER[] ?
// 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'
[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
PatStey
Hors ligne
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
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
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
Pages: 1