Hello,
Je débute sur Zend et je suis en train de développer une application modulaire, mais tout ne fonctionne pas comme cela le devrait et je ne parviens pas à trouver pourquoi.
Le problème : je peux naviguer dans mon module "Default" avec les différents controllers de ce module, mais je ne peux accéder qu'à l'index des autres modules, je n'arrive pas à accéder à pointer sur d'autres actions.
Voici mon arborescence :
Je peux accéder à l'action "test" dans mon module "default", mais ce qui est bizarre c'est qu'il a fallu que je change le nom du fichier de vue en "index.phtml" au lieu de "test.phtml" pour que ça marche... Je ne sais pas encore pourquoi ça ne marche pas en laissant "test.phtml".
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48/application/ /Bootstrap.php /cache/ /configs/application.ini /layouts/layout.phtml /modules/ /default/ /Bootstrap.php /configs/ /controllers/ /IndexController.php /ErrorController.php /TestController.php /forms/ /models/ /plugins/ /views/ /filters/ /helpers/ /scripts/ /error/error.phtml /index/index.phtml /test/index.phtml /membres/ /Bootstrap.php /configs/ /controllers/ /IndexController.php /ErrorController.php /InscriptionController.php /forms/ /models/ /plugins/ /views/ /filters/ /helpers/ /scripts/ /error/error.phtml /index/index.phtml /inscription/index.phtml
Par contre dans le module "membres" il m'est impossible d'accéder à l'action "inscription", que je nomme la vue "index.phtml" ou "inscription.phtml". Etrange non ?
J'ai mon Bootstrap.php à la racine de l'application qui contient ce code :
Les Bootstrap.php des autres modules ne contiennent que ce code pour l'instant :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?php public function run() { // Cela permet d'avoir la configuration disponible de partout dans notre application Zend_Registry::set('config', new Zend_Config($this->getOptions())); parent::run(); } protected function _initAutoload() { // On enregistre les modules (les parties de notre application) $loader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH)); return $loader; } protected function _initSession() { // On initialise la session $session = new Zend_Session_Namespace('test', true); return $session; } protected function _initView() { // Initialisation de la vue et des helpers de vue $view = new Zend_View(); $view->doctype('HTML5'); $view->headTitle('TEST') ->setSeparator(' : '); $view->headLink()->prependStylesheet('/css/global.css'); $view->headScript()->prependFile('/js/jquery-1.6.1.min.js'); // On ajoute le dossier des helpers $view->addHelperPath(APPLICATION_PATH . '/views/helpers'); // On charge l'helper qui va se charger de la vue $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); return $view; } }
Mon fichier application.ini :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php class Membres_Bootstrap extends Zend_Application_Module_Bootstrap { }
Mon fichier "index.php" à la racine du site :
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
24
25
26
27
28
29
30
31
32
33 [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpSettings.date.timezone = "Europe/Paris" includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" autoloaderNamespaces[] = "Zend_" ; initialize database resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "user" resources.db.params.password = "****" resources.db.params.dbname = "database" resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss" resources.db.isDefaultTableAdapter = true resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules = "" resources.frontController.useDefaultControllerAlways = true resources.layout.layout = "layout" resources.layout.layoutpath = APPLICATION_PATH "/layouts" [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
Et enfin voici par exemple mon fichier "InscriptionController.php", du module "membres" :
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
24
25
26
27
28
29
30
31
32 <?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zf')); // 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(APPLICATION_PATH . '/../library'), APPLICATION_PATH . '/modules/admin/models', APPLICATION_PATH . '/modules/petitesannonces/models', APPLICATION_PATH . '/modules/blogs/models', APPLICATION_PATH . '/modules/membres/models', get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; require_once 'Zend/Session.php'; Zend_Session::start(); // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Je ne comprends pas pourquoi je ne peux pas accéder à d'autres actions que celle par défaut (index) des modules autres que "Default", je ne comprends pas non plus pourquoi je dois nommer ma vue "index.phtml" dans le dossier "test" des vues du module "Default".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php class Membres_InscriptionController extends Zend_Controller_Action { public function inscriptionAction(){ $this->view->show = 'Inscription'; } }
D'ailleurs je ne sais pas si je dois changer mon fusil d'épaule concernant la gestion de mes Bootstrap.php : dois-je laisser le code existant du Boostrap.php situé à la racine ou dois-je le laisser vierge et mettre plutôt du code dans les Bootstrap.php de mes modules ?
Si vous avez une idée d'où vient le problème ou avez une autre méthode je suis preneur, par ailleurs je teste sur mon hébergement : hébergement mutualisé chez MavenHosting.
Merci,
BBFUNK01
Partager