Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-11-2012 12:52:10

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

[Problème] Zend Routers ne fonctionnant pas

Bonjour à tous,

Ne connaissant pas très bien zend framework, j'essaye de mettre en place un système de routes via un fichier .ini.

En voici une partie, en sachant que le reste et du même acabit :

routes.donjons.type = "Zend_Controller_Router_Route"
routes.donjons.route = "donjons.html"
routes.donjons.defaults.module = "Core"
routes.donjons.defaults.controller = "donjons"
routes.donjons.defaults.action = "index"

Voilà, comment s'initialise mon router dans le bootstrap de mon module Core :

protected function _initRouter()
    {
       $routeConfig = new Zend_Config_Ini(
           ROOT_PATH . DIRECTORY_SEPARATOR .
           'application' . DIRECTORY_SEPARATOR .
           'Core' . DIRECTORY_SEPARATOR .
           'configs' . DIRECTORY_SEPARATOR .
           'routes.ini', APPLICATION_ENV
       );
       
       Zend_Controller_Front::getInstance()
                                   ->getRouter()
                                   ->addConfig($routeConfig, 'routes');
    }

L'URL-rewritting est activé via un fichier .htaccess :

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

Si je me trompe pas, en appelant la page, si je fais monsite.com/donjons.html ou monsite.com/donjons/index, çà devrait l'afficher ? Dans mon cas, j'obtiens une erreur :

Not Found

The requested URL /public/donjons.html was not found on this server.

ou

Not Found

The requested URL /TNA/index.php was not found on this server.

Merci d'avance pour votre aide smile

Hors ligne

 

#2 03-11-2012 13:00:22

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: [Problème] Zend Routers ne fonctionnant pas

NicoC a écrit:

Ne connaissant pas très bien zend framework

Passe directement à ZF2 si tu débutes.


22914720

Hors ligne

 

#3 03-11-2012 13:05:06

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: [Problème] Zend Routers ne fonctionnant pas

Cà c'est prévu quand j'aurais une meilleure connaissance de zf1.

Mon travail est sur zf1, je vais pas leur demander de tout changer pour passer à zf2, sachant qu'il y a pas mal de choses de déjà faites.

Hors ligne

 

#4 03-11-2012 15:16:33

ptitjib
Membre
Date d'inscription: 03-12-2009
Messages: 10

Re: [Problème] Zend Routers ne fonctionnant pas

Bonjour,
Vois plutôt du côté du regex et du reverse:

Code:

[lang=ini]
routes.list.type = "Zend_Controller_Router_Route_Regex"
routes.list.route = "list(?:-(\d+))?(?:-(\d+))?\.html"
routes.list.defaults.module = "default"
routes.list.defaults.controller = "catalog"
routes.list.defaults.action = "list"
routes.list.defaults.page = null
routes.list.map.1 = "id"
routes.list.map.2 = "page"

routes.list.reverse = "list-%d-%d.html"

Vu ici: http://www.z-f.fr/forum/viewtopic.php?id=2869

ou plutôt du côte des routes static:

Code:

[lang=php]
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$router->addRoute('machin.html', new Zend_Controller_Router_Route_Static(array(
  'module'=>'TON_MODULE',
  'controller'=> 'TON_CONTROLEUR',
  'action'=> 'TON_ACTION'
)));

Dernière modification par ptitjib (03-11-2012 15:35:51)

Hors ligne

 

#5 06-11-2012 11:29:44

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: [Problème] Zend Routers ne fonctionnant pas

Bonjour,

Je viens de tester ton code de routes static, mais j'obtiens une erreur sur un trim().
Message : expects parameter 1 to be string, array given

Perso, j'ai rajouté aucun trim dans toutes l'application.

Voici le code que j'ai utilisé :

$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$router->addRoute('donjons.html', new Zend_Controller_Router_Route_Static(array(
        'module'=>'Core',
        'controller'=> 'Donjons',
        'action'=> 'index'
)));

J'ai testé un autre code que j'ai trouvé sur un autre forum, celui-ci ne provoque pas d'erreur avec trim mais quand je clic sur mon lien, toujours cette erreur : Not Found The requested URL /public/members (ou /members)  was not found on this server.

$fc = Zend_Controller_Front::getInstance();
        $router = $fc->getRouter();       
        $route = new Zend_Controller_Router_Route('donjons', array('module' => 'Core', 'controller' => 'Donjons', 'action' => 'index'));
        $router->addRoute('donjons', $route);

En ce qui concerne le routes via le fichier .ini, j'ai rien testé d'autres pour le moment. Par contre, je vois pas ce que çà peut changer le fait d'utiliser des regex.
Ma route étant en dur pour chaque page ex : routes.home.route = "index.html" ou routes.donjons.route = "donjons.html".


Je continue à chercher smile

Hors ligne

 

#6 06-11-2012 13:59:02

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

Re: [Problème] Zend Routers ne fonctionnant pas

NicoC a écrit:

Bonjour à tous,

Ne connaissant pas très bien zend framework, j'essaye de mettre en place un système de routes via un fichier .ini.

En voici une partie, en sachant que le reste et du même acabit :

routes.donjons.type = "Zend_Controller_Router_Route"
routes.donjons.route = "donjons.html"
routes.donjons.defaults.module = "Core"
routes.donjons.defaults.controller = "donjons"
routes.donjons.defaults.action = "index"

Voilà, comment s'initialise mon router dans le bootstrap de mon module Core :

protected function _initRouter()
    {
       $routeConfig = new Zend_Config_Ini(
           ROOT_PATH . DIRECTORY_SEPARATOR .
           'application' . DIRECTORY_SEPARATOR .
           'Core' . DIRECTORY_SEPARATOR .
           'configs' . DIRECTORY_SEPARATOR .
           'routes.ini', APPLICATION_ENV
       );
       
       Zend_Controller_Front::getInstance()
                                   ->getRouter()
                                   ->addConfig($routeConfig, 'routes');
    }

L'URL-rewritting est activé via un fichier .htaccess :

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

Si je me trompe pas, en appelant la page, si je fais monsite.com/donjons.html ou monsite.com/donjons/index, çà devrait l'afficher ? Dans mon cas, j'obtiens une erreur :

Not Found

The requested URL /public/donjons.html was not found on this server.

ou

Not Found

The requested URL /TNA/index.php was not found on this server.

Merci d'avance pour votre aide smile

bonjour,
ta route configurée dans le fichier routes.ini est bonne. le fichier routes.ini est-il chargé?
autre problème: t'as pas configuré de vhost donc aucun vhost ne pointe sur le répertoire public de ton projet
si t'as pas encore de vhost configuré tu peux tester ta route comme ça:
monsite.com/public/index.php/donjons.html

Hors ligne

 

#7 06-11-2012 14:06:48

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

Re: [Problème] Zend Routers ne fonctionnant pas

NicoC a écrit:

Bonjour,

J'ai testé un autre code que j'ai trouvé sur un autre forum, celui-ci ne provoque pas d'erreur avec trim mais quand je clic sur mon lien, toujours cette erreur : Not Found The requested URL /public/members (ou /members)  was not found on this server.

$fc = Zend_Controller_Front::getInstance();
        $router = $fc->getRouter();       
        $route = new Zend_Controller_Router_Route('donjons', array('module' => 'Core', 'controller' => 'Donjons', 'action' => 'index'));
        $router->addRoute('donjons', $route);

Je continue à chercher smile

cette route est aussi bonne le seul problème c'est qu'il n y a pas de vhost qui pointe sur le public de ton projet.comme t'as pas de vhost tu peux tester la route comme ceci(c'est pas géniale mais c'est juste pour des testes):

mondomaine.com/public/index.php/donjons

Dernière modification par amiss (06-11-2012 14:08:11)

Hors ligne

 

#8 06-11-2012 14:14:20

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: [Problème] Zend Routers ne fonctionnant pas

Si si, j'ai bien un vhost :

<VirtualHost 127.0.0.1:8080>
        ServerAdmin .....@.......fr
        ServerName................../TNA

        DocumentRoot /home/kcin/www/TNA/public

        <Directory /home/kcin/www/TNA/public>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                SetEnv APPLICATION_ENV development
                #SetEnv APPLICATION_ENV production
          </IfModule>

        </Directory>
        AddDefaultCharset UTF-8
        #ErrorLog ${APACHE_LOG_DIR}/error-TNA.log
        LogLevel warn
        #CustomLog ${APACHE_LOG_DIR}/access-TNA.log combined
</VirtualHost>

Je viens de faire un var_dump de mon objet router, et je vois bien apparaître les différents éléments du fichier .ini. Donc côté chargement, çà doit être correct.

Mais est il vraiment pris en compte >.> Car je sais que je n'arrive pas à avoir la variable APPLICATION_ENV a development, donc doit y avoir un soucis dans ce vhost....

Dernière modification par NicoC (06-11-2012 14:23:29)

Hors ligne

 

#9 06-11-2012 14:17:21

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: [Problème] Zend Routers ne fonctionnant pas

Et quand je fais cette URL : http://kcin.testing-ground.lorbac.net/T … hp/members , çà m'affiche bien le contenu de la page...

Dernière modification par NicoC (06-11-2012 18:12:17)

Hors ligne

 

#10 08-11-2012 09:25:18

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: [Problème] Zend Routers ne fonctionnant pas

Donc en fait,ce que j'aimerais c'est pouvoir avoir une URL de ce style :
http://nom-de-domaine/public/donjons.html

En gros, ne plus avoir index.php entre public et le .html

Merci.

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