Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-04-2014 18:56:33

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

L'url ne renvoie pas vers le controller

Bonjour,

Je rencontre un souci avec le ZF (1.12.3). Lorsque je vais à l'adresse http://monsite/ je suis bien dans mon IndexController.
Par contre si je vais à http://monsite/plop (PlopController existe), je tombe sur une page 404.

Je ne sais pas d'où ça vient : ZF ? config Apache ?

Merci pour votre aide.

Dernière modification par 17795 (09-04-2014 10:49:32)

Hors ligne

 

#2 07-04-2014 11:03:20

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Bonjour,

Je cherche toujours une solution à ce problème, merci pour votre aide smile

Hors ligne

 

#3 07-04-2014 14:23:31

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

Salut, as-tu bien renseigné ton fichier .htaccess ?

Hors ligne

 

#4 07-04-2014 14:39:19

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Voici le contenu du .htaccess :

Code:

### surcharge du vhost
SetEnv APPLICATION_ENV production
SetEnv OPERATING_SYSTEM linux

ErrorDocument  404  /error

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

# Vidéos
AddType video/ogg  .ogv
AddType video/mp4  .mp4
AddType video/webm .webm

Hors ligne

 

#5 07-04-2014 14:45:19

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

Ok et la route existe bien ?

Hors ligne

 

#6 07-04-2014 14:51:46

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Je ne comprends pas la question...

Hors ligne

 

#7 07-04-2014 15:00:59

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

Tu as bien déclaré la route pour attendre /plop ? Si tu ne comprends toujours pas, faut lire la doc wink

Hors ligne

 

#8 07-04-2014 15:22:13

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Je pensais que c'est le framework qui gérait cela, je ne pensais pas que c'était une config manuelle.

Le quickstart de la doc n'évoque pas ce sujet, pourtant en tapant http://monurl/guestbook, on atterrit bien dans le GuestbookController.

Hors ligne

 

#9 07-04-2014 15:51:00

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Si je comprends bien la doc, les directives de mon .htaccess suffisent à rediriger l'URI définie (la partie après l'URL de base) vers index.php, or dans mon cas je ne passe pas dans ce fichier (j'ai mis un echo 'plop'; die; en ligne 2)...

Hors ligne

 

#10 08-04-2014 23:10:09

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Petit up, pour essayer de comprendre (et après avoir lu la doc..)

Hors ligne

 

#11 09-04-2014 09:17:28

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

Salut, évites de triple poste, tu peux éditer ...

Bref je t'encourage à relire la doc, effectivement le .htaccess redirige tout vers le point d'entrée qui est index.php et ensuite le router du ZF prend le relais. Tu dois donc définir une route qui pointe vers ton contrôleur, il peut pas le deviner tout seul wink

Hors ligne

 

#12 09-04-2014 10:54:29

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Pourtant pour le guestbook, il le devine, car il n'y a ni fonction de routing définie dans le bootstrap, ni fichier de config routes.ini...

Et si je crée un TestController, avec un echo 'coucou'; die; dans le indexAction(), et que je tape l'adresse http://monurl/test, j'ai bien le coucou qui s'affiche. Pourtant je n'ai pas créé de route qui s'appelle test !

Dans ce cas j'ai bien dans la requête HTTP le pathInfo qui vaut /test, et le _controller qui est égal à test, et ça c'est bien le ZF qui le gère, pas moi.

Dernière modification par 17795 (09-04-2014 11:01:29)

Hors ligne

 

#13 09-04-2014 11:01:20

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

Oui tu es sur les routes automatiques via regexp alors (ça fait longtemps que j'ai pas fait de ZF1). Donc d'après ce que tu me dis pour que ça fonction il te faut une methode indexAction dans ton contrôleur PlopController pour que la route plop fonctionne. Si ton action s'appelle plopAction alors l'url pour y accéder doit être /plop/plop. Si ça ne fonctionne pas c'est ton contrôleur qui a un problème.

Hors ligne

 

#14 09-04-2014 11:03:56

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Oui c'est bien ça, du moins dans le quickstart ça fonctionne ainsi.

Or sur mon projet, je n'ai pas ce résultat, je ne passe même pas dans le index.php, forcément ça ne route pas. Et je ne sais pas pourquoi, c'est là que je coince. Définir une route à la main ne servira à rien puisque le frontController n'est pas chargé.

Hors ligne

 

#15 11-04-2014 12:10:01

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: L'url ne renvoie pas vers le controller

si http://monsite/ renvoie bien IndexControleur , donc le contrôleur par défaut, et tout autre contrôleur renvoie vers 404 cela laisse penser  que le répertoire public n'est pas la racine de ton projet c-a-d que le directive DocumentRoot d'apache(de ton vhost) ne pointe pas vers public.

Dans ton cas pour accéder au contrôleur PlopController tu bien obliger de faire:

Code:

http://monsite/public/index.php/plob

Pour corriger cela il faut bien que ton vhost pointe vers public

Dernière modification par amiss (11-04-2014 12:12:03)

Hors ligne

 

#16 11-04-2014 12:32:56

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Voilà mon vhost :

Code:

<VirtualHost *:80>
    DocumentRoot "C:\wamp\www\monsite\public"
    ServerName monsite.dev
    ServerAlias monsite.dev
    ErrorLog "logs/monsite-error.log"
    CustomLog "logs/monsite-error.log" common
    SetEnv APPLICATION_ENV development
    <Directory "C:\wamp\www\monsite\public">
        Options Indexes Multiviews FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

http://monsite/public/index.php/plop me renvoie aussi une 404.

Hors ligne

 

#17 11-04-2014 13:18:41

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: L'url ne renvoie pas vers le controller

http://monsite/public/index.php/plop me renvoie aussi une 404.

je suppose que dans PlopController t'as une action indexAction?

sinon essaie de poster l'arborescence de ton projet ainsi que la classe PlopController

Dernière modification par amiss (11-04-2014 13:19:24)

Hors ligne

 

#18 11-04-2014 13:45:04

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

Ma classe PlopController :

Code:

<?php

class PlopController extends Zend_Controller_Action
{

    public function init()
    {
        echo 'PlopController init()'; die;
        
    } // end init()
    
    
    public function indexAction()
    {
        echo 'PlopController indexAction()'; die;
        
    } // end indexAction()
    
} // end class

Il n'y a encore rien dedans puisque je ne l'atteind pas.

L'arbo du projet :

_1SQL
_application
___configs
_____application.ini
___controllers
_____ErrorController.php
_____IndexController.php
_____PlopController.php
___layouts
_____scripts
_______layout.phtml
___models
___views
_____scripts
_______index
_________index.phtml
_______plop
_________plop.phtml
___Bootstrap.php
_library
___Zend
_public
___css
_____...
___js
_____...
___media
_____... (images,...)
___.htaccess
___robots.txt

Dernière modification par 17795 (11-04-2014 13:46:41)

Hors ligne

 

#19 11-04-2014 15:43:20

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: L'url ne renvoie pas vers le controller

il faut mettre ton projet en environnement de développement pour pouvoir afficher l'erreur car 404 peut être lié à htaccess, à des espaces sur le nom du fichier PopControleur.. .pour ce faire dans ton fichier htaccess APPLICATION_ENV doit être à "development"  (inutile d'en définir dans ton vhost):

Code:

#htaccess
    SetEnv APPLICATION_ENV "development"

Postes aussi les logs de ton serveur apache.

Dernière modification par amiss (11-04-2014 15:44:08)

Hors ligne

 

#20 11-04-2014 15:56:22

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: L'url ne renvoie pas vers le controller

S'il est déjà dans le vhost ça ne sert à rien de le mettre dans le .htaccess

Hors ligne

 

#21 11-04-2014 16:50:04

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: L'url ne renvoie pas vers le controller

La directive est mise à development, je n'ai pas d'erreur particulière qui s'affiche, à part "not found".
Elle est redéclarée pour ne pas oublier de la changer sur la prod (l'avoir deux fois est inutile mais je ne pense pas que cela provoque cette erreur).

Logs Apache :

127.0.0.1 - - [11/Apr/2014:16:44:47 +0200] "GET / HTTP/1.1" 200 4000
127.0.0.1 - - [11/Apr/2014:16:44:50 +0200] "GET /plop HTTP/1.1" 404 204

La 1e ligne est en status 200, c'est la page d'index qui s'affiche bien.
Je n'ai rien de plus en allant sur la page /plop

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