Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je débute avec Zend et depuis ce matin, je n'arrive pas à faire marcher une architecture avec modules. Le site en question sera une boutique en ligne, il y a donc une partie "admin" que j'ai pensé gérer comme un module.
Voilà l'architecture de mon site :
application
--configs
--config.ini
--modules
--default
--controllers
--layouts
--models
--views
--admin
--controllers
--layouts
--models
--views
library
--zend
public
--css
--images
--js
index.php
Le contenu de mon index.php :
<?php set_time_limit(0); error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); date_default_timezone_set('Europe/Paris'); // directory setup and class loading set_include_path('.' . PATH_SEPARATOR . '../library/' . PATH_SEPARATOR . '../application/modules/default/models' . PATH_SEPARATOR . get_include_path()); require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); $loader->suppressNotFoundWarnings(false); // start Session Zend_Session::start(); // load configuration $config = new Zend_Config_Ini('../application/configs/config.ini','general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // setup database $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); $session = new Zend_Session_Namespace('Default'); $registry->set('session', $session); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->addModuleDirectory('../application/modules'); $frontController->setControllerDirectory(array( 'default' => '../application/modules/default/controllers', 'admin' => '../application/modules/admin/controllers')); Zend_Layout::startMvc(array('layoutPath'=>'../application/modules/default/layouts', 'layoutAdmin'=>'../application/modules/admin/layouts')); // run! $frontController->dispatch();
Mon config.ini :
db.adapter = PDO_MYSQL db.params.host = localhost db.params.username = root db.params.password = db.params.dbname = test resources.modules[] =
Le nom de la classe du IndexController du module admin est bien Admin_IndexControler.
Si je fais :
- http://localhost/testZend/public/
-http://localhost/testZend/public/index/index
ça marche
mais impossible d'accéder aux modules :
http://localhost/testZend/default/
http://localhost/testZend/admin/
Erreur 404, not found.
Je croyais que l'url des modules étaient de la forme : module/controleur/action/ ? Je ne comprend pas ce qui me manque pour faire marcher les modules, j'ai l'impression qu'ils ne se chargent pas.
Merci de votre aide
Hors ligne
Je te conseil de générer ton projet avec zend tool, voici un tutoriel très bien fait :
http://blog.lyrixx.info/zend/comment-bi … zend_tool/
Ensuite pour l'architecture, voici comment j'aurai procédé dans ton dossier application, j'aurai créer seulement un module admin, le frontend se basant sur l'architecture de base.
Puis dans ton bootstrat il suffit de changer le module par défaut en fonction de la session.
Lorsqu'une session est ouverte c'est le module admin, à l'inverse c'est le default.
Pour que les modules soient pris en compte il faut que tu ajoute ces 2 lignes de code dans application.ini :
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules[] = ""
Hors ligne
@t_penible :
C'est pas http://localhost/testZend/default/
Tu as oublié le /public/ dans l'URL
Sinon effectivement le moduleDirectory à ajouter.
A+, Philippe
Hors ligne