Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis chargé par ma boîte d'analyser le Zend Framework et de la comparer à Cake et Symfony, mais depuis une demi-journée je me bats pour simplement l'installer et le faire fonctionner... Autant dire que la décision finale est déjà prise par mon chef ! Mais j'aimerais tout de même comprendre pourquoi cela ne marche pas.
Je suis sous Win XP, j'ai monté un AMP perso, avec Apache 2.2.4, MySQL 5 et PHP 5.2.4. Ce serveur fonctionne parfaitement.
Ce que j'ai fait pour le ZF (en suivant le tutoriel de Kitpages) :
- récupération de la 1.0.2
- création d'un répertoire "C:/WEB/zendfwk/" dans lequel j'ai mis le répertoire "library" du ZF
- création d'un répertoire "C:/WEB/www/voileszf", dans lequel j'ai créé l'arborescence suivante :
+controllers
- IndexController.php
+models
+public
+images
+styles
+views
+filters
+helpers
+scripts
+index
-index.phtml
- .htaccess
- index.php
Dans le .htaccess j'ai mis :
RewriteEngine on RewriteRule .* index.php
Dans mon contrôleur :
<?php require 'Zend/Controller/Action.php'; class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->testMessage = "Mon message de test"; } } ?>
Dans la vue :
<html> <head> <title>Mon test du Zend Framework</title> </head> <body> <?php echo $this->testMessage; ?> </body> </html>
Et enfin, dans l'index.php :
<?php define("WEBAPP_DIR","C:/WEB/www/voileszf"); define("MODEL_DIR",WEBAPP_DIR."/models/"); define("ROOT_URL","http://localhost/voileszf"); define("BASE_URL","/voileszf/"); define("ZEND_FRAMEWORK_DIR","C:/WEB/zendfwk/library"); define("DB_SERVER","localhost"); define("DB_PORT","3306"); define("DB_NAME","voilezf"); define("DB_USER","root"); define("DB_PASSWORD","My8QL;"); define("DB_TYPE","PDO_MYSQL"); set_include_path("C:/WEB/zendfwk/library"); require_once 'Zend/Loader.php'; // Registry init Zend_Loader::loadClass("Zend_Registry"); // Controller init Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Controller_Router_Rewrite'); $controller = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_Router_Rewrite(); $cmtRoute = new Zend_Controller_Router_Route( "comment/:action/:comment", array( "comment"=>null, "controller"=>"comment", "action"=>"display" ) ); $router->addRoute("comment",$cmtRoute); $controller->setBaseUrl(BASE_URL); $controller->setRouter($router); $controller->setControllerDirectory('/controllers'); $controller->throwExceptions(true); // init viewRenderer $view = new Zend_View(); $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setView($view)->setViewSuffix('phtml'); // call dispatcher $controller->dispatch(); ?>
Or, quand je lance mon browser avec "http://localhost/voileszf", je n'ai qu'une page blanche !
Première question : en plus de faire un "set_include_path("C:/WEB/zendfwk/library");" dans l'index.php, dois-je obligatoirement modifier le PHP.ini ??
Deuxième question : par rapport à d'autres frameworks, je trouve très contraignant d'avoir à fabriquer un tel index pour chaque appli, ne peut-on se passer de tout ou partie de ce code ?
Par avance, merci à ceux qui m'apporteront leurs idées !
Cordialement,
Avairet
Hors ligne
1 - Non
Essaye juste ca pour tester, pour un debut je pense que tu vas un peu trop vite.
<?php define("WEBAPP_DIR","C:/WEB/www/voileszf"); define("MODEL_DIR",WEBAPP_DIR."/models/"); define("ROOT_URL","http://localhost/voileszf"); define("BASE_URL","/voileszf/"); define("ZEND_FRAMEWORK_DIR","C:/WEB/zendfwk/library"); set_include_path('.' . PATH_SEPARATOR . ZEND_FRAMEWORK_DIR . PATH_SEPARATOR . MODEL_DIR . PATH_SEPARATOR . get_include_path()); require_once 'Zend/Loader.php'; // Controller init Zend_Loader::loadClass('Zend_Controller_Front'); $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory('/controllers'); $controller->throwExceptions(true); // call dispatcher $controller->dispatch();
Voilà avec ca tu dois deja avoir une page qui s'affiche. J'espere que j'ai rien oublié.
Dernière modification par alien7 (30-10-2007 18:47:25)
Hors ligne
Salut Alien et merci d'avoir pris 5 minutes pour me répondre !
Tu dis que je vais peut-être un peu vite, mais je n'ai pourtant que "recopier" le tutoriel "Initiation au Zend Framework 1.0.0 (FR Kitpages)" qui est le premier lien qu'on trouve dans la rubrique "Comment débuter ?" du présent site... Moi qui était emballé de trouver enfin des ressources didactiques en français pour un framework PHP (les autres sont toutes en anglais et parfois peu clairs), je suis un peu déçu.
En tout cas, dès que j'ai du temps libre, je vais tester ton exemple et suivre aussi le tuto d'IBM sur les 3 frameworks majeurs : http://www.ibm.com/developerworks/libra … ca=dkw-php
Je ne manquerai pas de continuer à suivre le développement du ZF et de sa communauté francophone.
Bonne continuation !
Avairet
Hors ligne
Bonjour,
Effectivement, je pense que je me suis trompé de fichier pour mon index.php, il me parrait bien long pour le tuto d'initiation... je corrigerai ça dans la semaine...
Sinon je suis quand même surpris par ta page blanche, est-ce que tu peux ajouter quelques traces dans ton index.php pour voir où s'arrête ton script ? (des echo "toto1, 2 ,3...")
A+, Philippe
Edit : c'est fait, j'ai simplifié le index.php
Dernière modification par philippe (31-10-2007 10:57:18)
Hors ligne
Bonjour Philippe,
Désolé d'avoir été un peu sec à propos de ton tuto... mais j'ai déjà tellement lutté avec d'autres frameworks et leurs docs ou tutos d'introduction et j'avais tellement d'espoir d'utiliser le ZF, justement à cause de toutes ces ressources francophones qui me paraissaient mieux fichues, que ma désillusion fut un peu trop grande !
En revanche, je ne peux pas te faire de traces car j'ai remis tout mon poste à zéro pour débuter notre projet.
Je me souviens seulement d'avoir fait quelques var_dump pour m'assurer que les chemins étaient bons et qu'ils semblaient faux, notamment l'include_path qui restait toujours à "c:\php\pear" ou un truc comme cela. C'est pour cela que j'avais posé ma question 1 au début de la discussion...
Comme je l'ai dit à Alien, dès que j'ai un peu de temps je reteste tout cela et vous tiens informé.
Avairet
Hors ligne