Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-07-2012 13:17:48

André
Nouveau membre
Date d'inscription: 30-07-2012
Messages: 1

Erreur dispatch si URL ne contient pas /public

Bonjour,

Je m'essaye au Framework Zend (v1.11.12, minimal) et rencontre l'erreur suivante :


Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\...\ZendFramework-1.11.12-minimal\library\Zend\Controller\Plugin\Broker.php on line 336


Cette erreur survient lorsque l'URL saisie est, par exemple, http://localhost/test/index/login

Pas de problème lorsque l'URL vaut http://localhost/test/public/index/login

Environnement : XAMPP sous Windows

Voici ce qui est présent sur le disque dans un dossier htdocs\test:

Code:

/.htaccess
/application/controllers/IndexControllers.php
/application/views/scripts/index/index.phtml
/application/views/scripts/index/login.phtml
/application/views/scripts/index/register.phtml
/public/index.php

C'est tout smile

Les fichiers *.phtml sont vides (mais néanmoins obligatoires, à priori, du moins en l'état ça plante si absents)

Le .htaccess :

Code:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ public/index.php [NC,L]

Egalement, le contenu du fichier index.php :

Code:

[lang=php]// Chargement automatique (remplace require, include...)
include 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();

$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory('../application/controllers');
$front->dispatch();

Et enfin le contenu de IndexController.php :

Code:

[lang=php]class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        echo "This is the indexAction().";
    }
    public function loginAction()
    {
        echo "This is the loginAction().";
    }
    public function registerAction()
    {
        echo "This is the registerAction().";
    }
}

Si vous remarquez quelques similitudes avec le tutoriel d'IBM (*) ce n'est pas un hasard wink.

Bien sûr, ici ou là, je tente d'adapter à la dernière version 1.X du Framework, et à l'arborescence "conseillée" (**)

Bref, il semble que le contrôleur frontal ne retrouve pas ses petits, ou qu'il y ait une récursion (?) lorsque l'URL ne contient pas "/public"...

Je bloque, aussi je me tourne vers vous.... Avez-vous une idée du pourquoi ?

D'avance un grand MERCI pour vos lumières smile

---

Question subsidiaire : également, lorsque l'URL saisie est localhost/test, la page obtenue en retour affiche le contenu du dossier "test"... tandis que j'aimerais bien entendu que le script public/index.php soit exécuté...

---

(*) dont vous fournissez un lien, et c'est d'ailleurs grâce à votre site que j'ai eu connaissance de ce tutoriel : http://www.ibm.com/developerworks/opens … php-zend1/

(**) http://framework.zend.com/manual/fr/lea … oject.html

Hors ligne

 

#2 30-07-2012 14:20:48

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Erreur dispatch si URL ne contient pas /public

Il te faut un vhost, et le tuto d'IBM date de 2006 quand même :x

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages