Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous
Après avoir fait un site en me formant sous Zend 1.7, l'été dernier environ. Me revoilà sur le framework Zend pour attaquer un nouveau projet assez gros.
Depuis ce matin, j'ai ingurgité pas mal de tutos avec de familiariser avec ce nouveau Zend. Je suis parti de la 1.10, et j'ai décidé, non sans mal au début, de le complet avec Doctrine (au passage si certains d'entres vous ont un joli tuto exhaustif sur YAML, je suis preneur...).
J'ai cependant un problème avec mon application modulaire. En effet les Bootstrap de module, peut importe ce que j'y mets dedans, il ne se passe rien. Il me semble pourtant avoir bien préciser ce qu'il y avait à préciser, notamment dans le application.ini
La fatigue n'aidant pas, je viens vers vous afin de m'éclairer un peu mes lanternes...
Déjà, voici un aperçu de mon architecture :
Mon index.php qui est dans mon dossier public :
<?php // Définition de variables defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); defined('LIBRARY_PATH') || define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../library')); // On charge la librairie set_include_path(implode(PATH_SEPARATOR, array( realpath(LIBRARY_PATH), get_include_path() ))); // Création de l'application require_once 'Zend/Application.php'; $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); // Chargement des ressources $bootstrap = $application->getBootstrap()->bootstrap('defaultNamespace') ->bootstrap('doctrine') ->bootstrap('locale') ->bootstrap('layout') ->bootstrap('view') ->bootstrap('mail'); // Lancement de l'application $application->run(); ?>
Mon Bootstrap.php principal :
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDefaultNamespace(){ $this->bootstrap('frontcontroller'); $fc = $this->getResource('frontcontroller'); $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule()); new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH . $defaultModule, )); } protected function _initView(){ $pluginView = $this->getPluginResource('view'); $view = $pluginView->getView(); $view->doctype('XHTML1_STRICT'); $view->addHelperPath(APPLICATION_PATH . '/views/helpers'); $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); return $view; } protected function _initLayout(){ $layout = $this->getPluginResource('layout')->getLayout(); $fc = $this->getResource('frontcontroller'); $layout->setLayoutPath($fc->getModuleDirectory() . $layout->getLayoutPath()); return $layout; } protected function _initDoctrine(){ require_once(LIBRARY_PATH . '/Doctrine/Doctrine.php'); spl_autoload_register(array('Doctrine', 'autoload')); $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->pushAutoloader(array('Doctrine', 'autoload')); $doctrineConfig = $this->getOption('doctrine'); Doctrine::loadModels($doctrineConfig['models_path']); $connection = Doctrine_Manager::connection($doctrineConfig['connection_string']); $connection->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL); $connection->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true); return $connection; } }
Mon application.ini (j'ai viré 2/3 trucs pour simplifier):
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpsettings.date.timezone = "Europe/Paris" includePaths[] = LIBRARY_PATH includePaths[] = APPLICATION_PATH "/models" includePaths[] = APPLICATION_PATH "/models/generated" autoloadernamespaces[] = "Common_" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.moduleControllerDirectoryName = "controllers" resources.frontController.defaultControllerName = "index" resources.frontController.defaultAction = "index" resources.frontController.defaultModule = "frontend" resources.frontController.throwexceptions = false resources.modules[] = "" resources.view.encoding = "UTF-8" resources.view.basePath = APPLICATION_PATH "/views/scripts" resources.layout.layout = "layout" resources.layout.layoutPath = "/views/layouts" ;Locale ;Mail ;Doctrine ;Erreurs
Et enfin mon Bootstrap qui ne "répond pas", rien de plus classique, j'y mets ce que je veux dedans, rien ne se passe :
<?php class Backend_Bootstrap extends Zend_Application_Module_Bootstrap{}
Voilà, voilà. Merci d'avance
Dernière modification par Stormfaint (13-03-2010 20:23:47)
Hors ligne
si j'me souviens bien, tu dois préciser quel modules sont a bootstrapper
resources.modules.monModule = "CheminVersLeDitModule"
Hors ligne
Bonjour,
Alors j'ai essayé, et toujours rien.
Je précise, que le controller et ma vue de mon module "backend", celui dont le Bootstrap est "inactif" fonctionne très bien.
Hors ligne
Ok, c'est clos.
J'avais mal pigé en fait le chargement de Ressources. Il me manquait la ressource "modules" vu que je voulais charger individuellement chaque ressources, sans charger les inutiles. Mais en fait ça sert à rien c'est déjà géré.
Mais bon au final ça m'avance pas des masses car les Bootstrap de modules sont toujours chargés, dommage.
Hors ligne
Hello,
De la lecture sur le sujet (en anglais) :
http://weierophinney.net/matthew/archiv … Donts.html
http://binarykitten.me.uk/dev/zend-fram … ework.html
http://www.amazium.com/blog/zend-framew … fic-config
http://blog.vandenbos.org/2009/07/07/ze … le-config/
@+
Hors ligne
Merci pour ces liens !
J'en avais déjà lu 2/3, et j'ai d'ailleurs mis en place l'idée de binarykitten qui fonctionne à la perfection
Hors ligne
Pages: 1