Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-12-2009 11:16:01

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Problème avec Zend_Controller_Router_Route_Regex

Bonjour ,

Bon j'utilise Zend_Controller_Router_Route_Regex actuellement dans mon application  et malgré quelque difficulté au début j'ai trouvé une solution mais incomplète en plus je veux passer mon code pour des gens qui n'ont pas encore utiliser cette classe.Je souhaite créer des pages personnalisées  sur mon site pour les villes,voilà mon code:



index.php :


Code:

$router = Zend_Controller_Front::getInstance()->getRouter();
 
        
$route = new Zend_Controller_Router_Route_Regex('city/([-\w]+)\.html?', array(
'controller'    => 'users',
'action'    => 'index'
), array(
1    => 'cityName',

), 'city/%s.html');
                
$router->addRoute('city', $route);

et dans le script vue :

Code:

<a href="<?php echo $this->url(array('cityName' => 'paris'), 'city', true); ?>">Title</a>

Alors cela marche bien mais je ne peux pas utiliser cette fonction que pour une seule page city/paris.php,alors j'ai 60 villes.Quand je met par exemple deux fois le code pour deux pages il m'affiche une seule pages pour les deux,c'est à dire que pour city/paris.php et city/marseille.php il me redirige toujours vers la deuxième,donc je trouve deux problèmes :

1) Une confusion entre les deux pages,
2) Je dois réécrire le code pour chaque page alors c'est trop  lourd comme code.



J'ai essayé à remédier le premier problème  avec Zend_Controller_Router_Route_Static cela marche avec deux pages,j'ai fais comme suit :


index.php :

Code:

$router = Zend_Controller_Front::getInstance()->getRouter();
$route = new Zend_Controller_Router_Route_Static('paris.php',array('action'=> 'index','controller'=> 'index'));
$router->addRoute('paris', $route);    
$route = new Zend_Controller_Router_Route_Static('marseille.php',array('action'=> 'index','controller'=> 'users'));
$router->addRoute('marseille', $route);

dans le script de ma vue :

Code:

<a href="<?php echo $this->baseUrl();?>/paris.php">Paris</a>
<a href="<?php echo $this->baseUrl();?>/marseille.php">Marseille</a>

Alors il me redirige vers la pages souhaitées sans confusion entre http://localhost/exemple/public/paris.php et http://localhost/exemple/public/marseille.php.

Mais encore j'aurai le même problème du code, je dois pour chaque page mettre son code dans mon index.php,donc si j'aurai 60 pages à personnaliser également 120 lignes ou plus dans mon bootstrap qui est lourd comme même et  je souhaite utiliser Zend_Controller_Router_Route_Regex.

Vous pouvez m'aider à résoudre ce problème,et surement c'est un sujet très important parce que on ne trouve rien sur le net sauf la solution que j'ai proposé qui est malheureusement incomplète ou lourde.



Merci.Nll

Dernière modification par elec (03-12-2009 17:35:36)

Hors ligne

 

#2 03-12-2009 17:23:35

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Re: Problème avec Zend_Controller_Router_Route_Regex

Bonjour tout le monde,


je me sens que je suis en train de mettre le problème et la solution au même temps,vraiment ce sujet est très important et la classe Zend_Controller_Router est un peu sombre même pour les vrais zenders ici!

Dans le message en haut j'ai parlé sur  Zend_Controller_Router_Static  et Zend_Controller_Router_Regex.Alors que maintenant j'ai trouvé une autre solution un peu plus claire et réalisable avec  Zend_Controller_Router_Route :

Bref j'ai voulu prendre un exemple d'un fiche d'utilisateur pour personnaliser ces pages,alors j'ai utilisé un fichier de configuration "routes.ini" qui est un peu plus facile :

dans mon bootstrap.php :

Code:

    protected function _initRouter(){
    $this->bootstrap('frontController');
    $front = $this->getResource('frontController');
    $router = $front->getRouter();
    $router->addConfig(new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', 'routes'), 'routes');
    return $router;
}

et pour mon ficher routes.ini(indépendant de notre fichier .ini de l'application) :

Code:

routes.acceuil.type = "Zend_Controller_Router_Route"
routes.acceuil.route = "/accueil.php"
routes.acceuil.defaults.controller = index
routes.acceuil.defaults.action = index

routes.utilisateur.type = "Zend_Controller_Router_Route"
routes.utilisateur.route = "fiche/utilisateur.php"
routes.utilisateur.defaults.controller = users
routes.utilisateur.defaults.action = index

routes.ajouter.type = "Zend_Controller_Router_Route"
routes.ajouter.route = "fiche/ajouter.php"
routes.ajouter.defaults.controller = users
routes.ajouter.defaults.action = create

et dans le script de la vue(par exemple pour la page de l'utilisateur) :

Code:

<a href="<?php echo $this->baseUrl();?>/fiche/utilisateur.php">La fiche d'utilisateur</a>

Il me reste à personnaliser la page de modification d'utilisateur ou je dois devant chaque ligne qui contient les infos de chaque utilisateur(nom,prénom,mot de passe...) un lien pour la page de modification donc j'ai personnalisé cette page par une autre façon en utilisant "Zend_Controller_Router_Regex" comme ceci "http://localhost/exemple/public/fiche/modifier-"id".php,et voilà le code:

Code:

    protected function _initRouters()
    {
        
        $router = Zend_Controller_Front::getInstance()->getRouter();
 
        $route = new Zend_Controller_Router_Route_Regex('fiche/modifier-(\d+).php?', array(
                    'controller'    => 'users',
                    'action'    => 'edit'
                ), array(
                    1    => 'id',
                ), 'fiche/modifier-%s.php');
                
        $router->addRoute('fiche', $route);

et dans le script de ma vue :

Code:

        <?php

            foreach ($this->usersArray as $users) :
        ?>

<a href="<?php echo $this->url(array('id' =>$users->id), 'fiche', true); ?>">Modifier</a>

<?php endforeach; ?>

Je souhaite que j'ai bien expliqué et je serai disponible pour toute explication mais au même temps il me reste tout cela un peu lourd alors si vous avez une solution complète ou on utilisera moins de code et plus réalisable.


Merci.Nll

Dernière modification par elec (03-12-2009 17:32:00)

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