Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-05-2009 15:58:05

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

[Zend_Controller_Router][1.8.0] Problème de rewrite ...

Bonjour à tous.

Je débute sur ce framework qui a l'air pas mal du tout.
Cependant, je bloque pour l'instant sur un routage que je compte réalisé.

L'objectif etant de remplacer http://127.0.0.1/monsite/index/index/cat/3/
par  http://127.0.0.1/monsite/categorie-3.html

simple me direz vous smile

malheureusement mon log, me dit :

exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (categorie-3.html)'

Voici mon code de routage:

Code:

$router = new Zend_Controller_Router_Rewrite();

$route = new Zend_Controller_Router_Route_Regex(
    'http://127.0.0.1/monsite/top-(\d+).html',
    array(
        'module'=>'index',
        'controller' => 'index',
        'action' => 'index'
    ),
    array(
        1=>'cat'
    ),
    'top-%d.html'
);
$router->addRoute('index', $route);

Je précise également mon .htaccess, qui se trouve au meme endroit que mon bootstrap.

Code:

RewriteEngine On
RewriteBase /monsite

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Mon arborescence étant la suivante:

index.php
.htaccess
/application
  /config
  /controllers
  /models
  /views
/css


Merci pour votre aide .

Dernière modification par TomDlx (19-05-2009 16:06:09)

Hors ligne

 

#2 19-05-2009 16:11:48

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Essaye avec ce code pour voir :

Code:

$router = new Zend_Controller_Router_Rewrite();

$route = new Zend_Controller_Router_Route_Regex(
    'monsite/top-(\d+).html',
    array(
        'module'=>'default', // "default" normalement à moins que tu l'as remplacé, ou soit tu enlève cette ligne
        'controller' => 'index',
        'action' => 'index'
    ),
    array(
        1=>'cat'
    ),
    'top-%d.html'
);
$router->addRoute('index', $route);

ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#3 19-05-2009 16:19:37

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

sad

merci pour ta réponse rapide, mais cette solution n'a pas l'air de fonctionné.

j'ai toujours Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (categorie-4.html)'

Hors ligne

 

#4 19-05-2009 16:27:05

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

D'ou sort "categorie" parce que dans la route il n'y figure pas.

Comment construis tu ton lien ? avec le helper $this->url() ?
Poste aussi ca.


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#5 19-05-2009 16:41:17

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Autant pour moi, fais pas attention à 'categorie', c'est bien 'Invalid controller specified (top-4.html)'.

Sinon le lien, je le fais en dur du genre <a href="top-5.html">, je n'utilise pas le $this->url().

Hors ligne

 

#6 19-05-2009 16:49:39

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Salut,

Ne donne pas le baseUrl dans la route.

Normalement le controller frontal le détectera tout seul, si ce n'est pas le cas, tu peux lui spécifier avec un:

Code:

$this->_front->setBaseUrl('monsite');

Ensuite ta route:

Code:

$router = $this->_front->getRouter();

$route = new Zend_Controller_Router_Route_Regex(
    'top\-(\d+)\.html',
    array(
        'module'=>'default', // "default" normalement à moins que tu l'as remplacé, ou soit tu enlève cette ligne
        'controller' => 'index',
        'action' => 'index'
    ),
    array(
        1=>'cat'
    ),
    'top-%d.html'
);

$router->addRoute('index', $route);

A+ benjamin.

Dernière modification par Delprog (19-05-2009 16:50:11)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#7 19-05-2009 16:58:13

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

ca ne marche toujours pas..
je trouve bizzare ce message d'erreur qui prend top-5.html pour un controlleur...

peut etre que le problème vient de ma configuration au niveau de apache ou de mon .htaccess ?

http://127.0.0.1/monsite/index/index/cat/1   marche nickel
mais alors, http://127.0.0.1/monsite/top-1.html, niet.. sad

Hors ligne

 

#8 19-05-2009 17:09:23

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Si tu as fait un copier-coller, cette route est correcte.

Quelles règles de ré-écritures utilises-tu pour Zend ?

Es-tu certain d'avoir bien ajouté la route au controlleur frontal ?


A+ benjamin.

Dernière modification par Delprog (19-05-2009 17:10:29)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#9 19-05-2009 17:20:23

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

j'ai fait un copier/coller de ton code..

-qu'entends tu par règles de ré-écritures pour Zend ?

-

Es-tu certain d'avoir bien ajouté la route au controlleur frontal ?

le seul code qui est dans mon bootstrap et qui devrait gérer les routes est le code suivant (en reprenant le tien..):

Code:

$router = $frontController->getRouter();

$route = new Zend_Controller_Router_Route_Regex(
    'top\-(\d+)\.html',
    array(
        'module'=>'default', // "default" normalement à moins que tu l'as remplacé, ou soit tu enlève cette ligne
        'controller' => 'index',
        'action' => 'index'
    ),
    array(
        1=>'cat'
    ),
    'top-%d.html'
);

$router->addRoute('index', $route);

Après, j'ai peut être oublier un element ..

help me

Hors ligne

 

#10 19-05-2009 17:27:11

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Ton code est correct.

-qu'entends tu par règles de ré-écritures pour Zend ?

Je parle des RewriteRule(s) que tu devrais avoir dans ton fichier .htaccess ou dans la config de ton alias.
http://framework.zend.com/manual/fr/zen … go.rewrite


Et sinon, je ne pense pas que ça soit le problème, mais as-tu essayé de spécifier le baseUrl au controlleur frontal comme suggéré plus haut ?


A+ benjamin.

Dernière modification par Delprog (19-05-2009 17:27:56)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#11 20-05-2009 14:15:01

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

help!!! svp..

bizarre quand même cette histoire..

même si je vide mon .htaccess, j'ai la même erreur.. j'ai l'impression qu'il ne soit pas pas executé..

autre chose à savoir qui peut être intéressant,
sur d'autre sites que j'ai réalisés (sans utiliser ZF), mes rewriterules sont de la forme
RewriteRule ^site-vente-privee/critiques-([^/]+)\.html$ http://127.0.0.1/AVP/index.php?page=fichesite&id=$1 [L]

je suis obligé de mettre http://127.0.0.1/AVP/ pour redirigé.

il semblerait que j'ai un problème de config.. sad

Hors ligne

 

#12 20-05-2009 15:49:18

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

help me plz sad

Hors ligne

 

#13 20-05-2009 17:22:21

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

je vous donne mon bootstrap en integralité, si quelqu'un voit qu'il manque quelque chose ou qu'il y a un truc louche.. hésitez pas .. je ne trouve vraiment pas la solution.

Code:

<?php

/* BOOTSTRAP  , contrôleur frontal */

// définition de constantes pour l'application
define('APP_MODE', 'dev');

// définition des chemins utiles
$rootPath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'monsite';


$appPath  = $rootPath . DIRECTORY_SEPARATOR . 'application';
$confPath = $appPath  . DIRECTORY_SEPARATOR . 'config';



// ********************* CONFIG *****************************

// configuration de l'include_path PHP pour l'autoload
set_include_path(get_include_path() . 
PATH_SEPARATOR . $appPath . 
PATH_SEPARATOR . $rootPath . DIRECTORY_SEPARATOR . 'library' . 
PATH_SEPARATOR . $appPath  . DIRECTORY_SEPARATOR . 'models');



require_once 'Zend/loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);

// Récupération des objets de configuration
$configMain    = new Zend_Config_Ini($confPath . DIRECTORY_SEPARATOR . 'config.ini', APP_MODE);
$configRoutes  = new Zend_Config_Ini($confPath . DIRECTORY_SEPARATOR . 'routes.ini');
$configSession = new Zend_Config_Ini($confPath . DIRECTORY_SEPARATOR . 'session.ini', APP_MODE);


// ************************** LOG ******************************

$log = new Zend_Log($writer = new Zend_Log_Writer_Stream($appPath . $configMain->logfile));


// Ajout de paramètres à enregistrer, adresse ip et navigateur
// $log->setEventItem('user_agent',$_SERVER['HTTP_USER_AGENT']);
// $log->setEventItem('client_ip',$_SERVER['REMOTE_ADDR']);

$log->addPriority('USER', 8);
// Ajout des paramètres enregistrés dans le format du journal à écrire
$format = '%client_ip% %user_agent%' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT;

// Ajout du format du journal au log
$writer->setFormatter(new Zend_Log_Formatter_Simple($format));

Zend_Registry::set('log', $log);

//***************************************************************


// ************************** DATABASE *******************************


try {
    $db = Zend_Db::factory($configMain->database);
    $db->query("SET NAMES 'UTF8'");
    $db->getConnection();

    // Passage de la connexion à toutes les classes passerelles
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    Zend_Db_Table::setDefaultAdapter($db);
    
} catch (Zend_Db_Exception $e) { 
    // on passe l'exception sous silence, elle sera gérée dans le système MVC plus tard 
}
// activation du cache des méta données des passerelles
Zend_Db_Table_Abstract::setDefaultMetadataCache($cacheInstance);

// Appel du controleur frontal qui se charge de traiter la requete
Zend_Controller_Front::run('./application/controllers');

// ********************* LOG ********************************* 
$writer = new Zend_Log_Writer_Stream($appPath . $configMain->logfile);
$log = new Zend_Log($writer);

// ************************ PAGINATEUR *********************************
Zend_View_Helper_PaginationControl::setDefaultViewPartial('common/pagination_control.phtml');

// ************************ contrôleur frontal *********************************

// Configuration du contrôleur frontal
$frontController = Zend_Controller_Front::getInstance();


$frontController->throwExceptions(false); // par défaut

// propagation de paramètres dans le système MVC
$frontController->setParam('debug', $configMain->debug);
$frontController->setParam('locale', $locale);
$frontController->setParam('config', $configMain);

$frontController->setControllerDirectory($appPath . '/controllers');

$frontController->setBaseUrl('/monsite/');
 $response = new Zend_Controller_Response_Http();
// $response->setRawHeader('Content-type: text/html; charset=utf-8');
// $frontController->setBaseUrl('http://127.0.0.1/monsite/');
// passage de la réponse configurée au système MVC
 $frontController->setResponse($response);


// définition et ajout de routes contact
// récupération du routeur

$router = $frontController->getRouter();

$route = new Zend_Controller_Router_Route_Regex(
    '/top-(.+).html',
    array(
        'module'=>'default', // "default" normalement à moins que tu l'as remplacé, ou soit tu enlève cette ligne
        'controller' => 'Index',
        'action' => 'Index'
    ),
    array(
        1=>'cat'
    ),
    'top-%d.html'
);

$router->addRoute('routeCat', $route);



Zend_Layout::startMvc( array('layoutPath' => $appPath . '/views/layouts' ));
// ******************************** DISPATCH ******************************
try {
    $frontController->dispatch();
} catch (Zend_Exception $e) {

    $log->crit($e);
}




?>

Que je mette les lignes qui ajoutes les routages ou pas , mon erreur est toujours la meme, Invalid Controller Specified.

Il ne prend absolument pas en compte l'url rewriting, pourtant bien activé.. (l'url rewriting marche sur mes applis qui tournent sans ZF).

Je compte sur votre aide merci d'avance.

Hors ligne

 

#14 22-05-2009 14:05:43

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

Salut,

Je ne sais pas si c'est ça mais tu dispatches 2 fois ton application dans ton bootstrap.
Zend_Controller_Front::run($controllerDirectory) dispatche automatiquement en interne.

Enlève cette partie de code:

Code:

// Appel du controleur frontal qui se charge de traiter la requete
Zend_Controller_Front::run('./application/controllers');

A++

Hors ligne

 

#15 22-05-2009 16:41:13

TomDlx
Nouveau membre
Date d'inscription: 18-05-2009
Messages: 9

Re: [Zend_Controller_Router][1.8.0] Problème de rewrite ...

merci blue Eyes. c'était çà qui n'allait pas...

A noter que dans l'expression regex, il faut enlever le slash dans l'expression '/top-(.+).html'

Encore merci à tous ceux qui m'ont aidé.

je vous aimes smile

Dernière modification par TomDlx (22-05-2009 16:50:09)

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