Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous
je débute avec zend framework 1.9.2 , j'ai respecté la structure MVC des répertoires /fichiers .
Je n'arrive pas à comprendre les liens pour appeler les contrôleurs /actions malgré des dizaines de tutorial.
Dans le fichier par défauts index/index.phtml , j'ai mis un lien pour appeler le contrôleur Membre
<a href="<?php echo $this->url(array('controller'=>'membres'));?>">Membre</a>.
mais en cliquant sur le lien , il me met "http://xxxx/public/membres/index" qui effectivement générer une erreur disant que le fichier est introuvable alors que cela devrait être "http://xxxx/application/view/script/membres/index".
Si Vous voyez ce que je veux dire.
Merci
Dernière modification par forst (14-10-2009 19:02:23)
Hors ligne
Bonjour,
si tu fais ceci:
<a href="<?php echo $this->url(array('controller' => 'toncontroller', 'action' => 'tonaction'));?>">Lelien</a>
cela veut dire que le controller "toncontroller" va etre sollicité. Ce dernier devra donc contenir une fonction tonactionAction() dans laquelle tu pourras faire des traitements. Une fois les traitements relatifs a l'action exécutés, il y a une redirection automatique vers un fichier "tonaction.phtml". Ce fichier généralement se situe sous views/scripts/toncontroller/
Si il te manque un de ces éléments cela ne fonctionnera pas
L'url qui s'affichera sera de la forme suivante :
http://localhost/tonapplication/public/toncontroller/tonaction/parametre1/valeurParametre1
J'espère que cette réponse te servira
Hors ligne
Heu non ton url devrait être:
http://xxxx/membres/index/
Si il te met http://xxxx/public/membres/index je pense que c'est parceque ton DocumentRoot dans ta config apache ne pointe pas vers le dossier "public".
Hors ligne
merci pour votre réponse, j'ai essayé votre solution mais je n'arrive pas , c'est toujours le même erreur.
code htaccess
SetEnv APPLICATION_ENV development SetEnv PHP_VER 5 AddHandler x-httpd-php5 .php RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
structure de répertoire
/application/ + configs / application.ini + controllers/ Error.php - IndexController.php - MembreController.php + layouts/scripts/ layout.phtml + views/scripts/ + index/index.phtml + membre/membre.phtml bootstrap /public/ index.php
la page index.phtml marche bien, donc le chemin de contrôleur a été bien défini, mais juste le lien qui ne marche pas.
Bizarre
Hors ligne
et pour le serveur mutualisé, comment je ferai pour pointer le dossier public comme page de démarrage?
Dernière modification par forst (19-10-2009 19:10:37)
Hors ligne
en fait dans ton url il ne doit pas te mettre "public"
Dans ton premier post tu donne cette url généré par Zend
http://xxxx/public/membres/index
or l'url devrait être:
http://xxxx/membres/index
A mon avis c'est un problème apache... Vérifie que:
1/ Ton .htaccess soit bien pris en compte...
2/ Le mod_rewrite d'apache soit activé
forst a écrit:
et pour le serveur mutualisé, comme je ferai pour pointer le dossier public comme page de démarrage?
Normalement dans un hébergement mutualisé on tu a un répertoire htdocs ou www... C'est ce répertoire qui sera ton rep public...
Ensuite ca dépend de l'hébergeur... Tous ne sont pas compatible avec Zend Framework
Hors ligne
il s'agit bien le problème du mode url rewrite d 'apache et qu'il faut mettre le répertoire 'public' comme htdocs.
Mais en démarrant sur la page, la navigateur me demande d'ouvrir ou enregistrer le fichier de démarrage ??? comme s il ne reconnait pas le type de fichier.
En plus
<?php echo $this->baseUrl(); ?>
ne marche plus et donc les liens css et image ne fonctionne plus. J 'ai utilisé avec la balise base et l'helper . j'avoue en pas comprendre mea culpa
Hors ligne
forst a écrit:
Mais en démarrant sur la page, la navigateur me demande d'ouvrir ou enregistrer le fichier de démarrage ??? comme s il ne reconnait pas le type de fichier.
Si il te propose de télécharger le fichier c'est qu'il te manque cette ligne dans ta configuration d'apache:
AddType application/x-httpd-php .php
N'oublie pas de redémarrer apache après...
Hors ligne
je suis toujours bloqué,c'est peut être du à la nouvelle version de bootstrap.
je mets les codes ci-dessus si je n'ai pas fait des erreurs
index.php du répéertoire public
<?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(); $application->run(); ?>
application.ini
[production] ; Initilisation du report d'erreurs pour le mode production phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 ; Libraire includePaths.library = APPLICATION_PATH "/../library" ; Layout resources.layout.layout = "layout" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" ; Bootstrap bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" ; Front controller resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Hors ligne
grâce à Michael sur IRC , il m' a aidé à résolu le problème de redirection
enfin il s'agit le nom de chemin au nom trop caractère d'accentué
maus aussi avec virtualhost en local à mettre dans la configuration d'apache
<VirtualHost *:80> ServerName fdev.dev DocumentRoot "D:/site/zend/html/public/" <Directory "D:/site/zend/html/public/"> AllowOverride all Allow from all </Directory> </VirtualHost>
et la "baseurl" n'affichait pas la même chose entre local et sur l'hébergement mutualisé
code en local seulement à mettre '/' devrait le nom de fichier css,image
<base href="/" > <link href="/styles/style.css" rel="stylesheet" type="text/css" />
chez l'hébergeur, parois on enlève le '/' d'ou mon cas chez Oxyd.
Par contre le problème de lien controleur ne marche toujours pas chez Oxyd.
parmi vous, étés vous héberger chez OXYD ? sinon que pensez vous chez Oxyd ?
Dernière modification par forst (20-10-2009 03:38:08)
Hors ligne