Bonjour à tous,
Après avoir fait un site avec une structure MVC à ma sauce mais quand même inspirée des tutos de Developpez.com, je me suis dit qu'il serait plus judicieux de franchement utiliser un framework qui a la chance d'être connu par quelqu'un d'autre afin de faciliter la maintenance future de mon application.
Je me lance donc dans Zend depuis 2 jours et j'ai voulu faire une appli qui affiche simplement 2 pages complètements statiques à partir de 2 controllers différents.
Malheureusement, comme pour certains avant moi et sûrement d'autres après moi, les pages ne sont pas trouvées.
Voici mon projet :
1 fichier application.ini dans application/configs/
2 controllers IndexController.php et PersonnesController.php dans application/controllers/
1 fichier index.phtml dans application/views/scripts/index/
1 fichier index.phtml dans application/views/scripts/personnes
application.ini :
IndexController.php :
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 [production] ; Initilisation du report d erreurs pour le mode production phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 ; Include Path includePaths.library = APPLICATION_PATH "/../library" ; Bootstrap bootstrap.class = "Bootstrap" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" ;appnamespace = "Application" ;resources.frontController.params.displayExceptions = 0 ;resources.frontController.params.prefixDefaultModule = "1" ; Initialisation frontController / des modules resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ;resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" ;resources.modules[] = "" resources.frontController.defaultControllerName = "index" resources.frontController.defaultAction = "index" ; Views resources.view.encoding = "UTF-8" ; Définition de la timezone phpsettings.date.timezone = "Europe/Paris" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
PersonnesController.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->maVar = 'Welcome Index'; } }
/index/index.phtml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php class PersonnesController extends Zend_Controller_Action { public function indexAction() { $this->view->maVar = 'Welcome Personnes'; } }
/personnes/index.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<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <a href="http://localhost/zfcomptaV2/index/index">index</a> <a href="http://localhost/zfcomptaV2/personnes/index">personnes</a> <div id="welcome"> <h1>Bienvenue sur l'application ZF - Index</h1> <?php echo $this->maVar; ?> </div> </body> </html>
Bootstrap.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <a href="http://localhost/zfcomptaV2/index/index">index</a> <a href="http://localhost/zfcomptaV2/personnes/index">personnes</a> <div id="welcome"> <h1>Bienvenue sur l'application ZF - Personnes</h1> <?php echo $this->maVar; ?> </div> </body> </html>
/public/.htaccess :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { //initilisation de l'autoloader pour une structure sans module protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader ( array ('namespace' => '', 'basePath' => APPLICATION_PATH ) ); return $moduleLoader; } protected function _initView() { // Initialisation de la vue $view = new Zend_View; $view->doctype('XHTML1_STRICT'); $view->headTitle('Mon application avec Zend_Application'); // Ajoutons le au ViewRenderer $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); // Retournons le, il sera stocké dans un registre par le bootstrap // pour utilisation future return $view; } // protected function _initDefaultNamespace() // { // $this->bootstrap('frontcontroller'); // $fc = $this->getResource('frontcontroller'); // $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule()); // // new Zend_Application_Module_Autoloader(array( // 'namespace' => '', // pas de namespace // 'basePath' => APPLICATION_PATH . $defaultModule, // )); // } /** * Initialize session * * @return Zend_Session_Namespace */ protected function _initSession() { // On initialise la session $session = new Zend_Session_Namespace ( 'ecommerce', true ); Zend_Registry::set('session',$session); return $session; } public function run() { // Cela permet d'avoir le fichier de configuration disponible depuis n'importe ou dans l'application. Zend_Registry::set ( 'config', new Zend_Config ( $this->getOptions () ) ); parent::run (); } }
/public/index.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
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 <?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../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(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Voilà, vous avez tout.
En fait, je pense que c'est plutôt l'URL rewriting qui ne va pas, à vous de me le confirmer.
Pourtant, mon fichier httpd.conf doit bien être configuré puisque j'utilise sans problème l'url rewriting pour une autre appli, mais qui n'est pas basé sur les principes de ZendFramework.
D'avance merci pour votre aide.
Partager