Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-09-2008 16:24:49

mstrl
Nouveau membre
Date d'inscription: 28-08-2008
Messages: 5

[Zend_Controller_Router]Routes au format /ctrl/act/key1=val1/key2=val2

Bonjour

J'aimerai utiliser une route au format:

Code:

/module/controller/action/key1=param1/key2=param2/ ...

Par souci de lisibilité (en particulier lorsque la liste des paramètres s'allonge).

Les routes par défaut n'offrent pas beaucoup d'options avec le 'joker' pour récupérer la liste des paramètres.
J'ai pensé qu'avec les expressions régulières, je pourrai obtenir un résultat mais je ne suis vraiment pas a l'aise avec celles çi...
Peut être devrais-je écrire un plugin pour traiter le routage de cette maniere?

Laurent

Hors ligne

 

#2 14-09-2008 10:49:59

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Zend_Controller_Router]Routes au format /ctrl/act/key1=val1/key2=val2

pourquoi ne pas utiliser le format std qui est similaire aussi lisible et qui ne demande rien ??

Code:

/module/controller/action/key1/param1/key2/param2/ ...

je ne vois pas l'utilité de changer un / en =

il me semble que

Code:

/module/controller/action/key[]/param1/key[]/param2/key[]/param/ ...

te permets de faire un

Code:

$this->_request->getParam('key');

qui te retourne le tableau key contenant l'ensemble des paramètres key

je ne l'ai pas fais sur les parametre mais sur les query ($_GET et $_POST)
je fais des chose comme

Code:

/module/controller/action?key[name1]/param1/key[name2]/param2/key[namex]/param/option[name1]/param1/option[name2]/param2 ...

du coup je récupère un tableau de paramètres nommés de key et un autre d'option

enfin dans le mode std tu peux récupérer tous les paramètres d'un coup

Code:

$this->_request->getParams();

mais dans ce cas tu récupère tout les param de l'url plus ceux du $_POST et $_GET

A+jyt

Hors ligne

 

#3 14-09-2008 11:17:29

mstrl
Nouveau membre
Date d'inscription: 28-08-2008
Messages: 5

Re: [Zend_Controller_Router]Routes au format /ctrl/act/key1=val1/key2=val2

Bonjour,

sekaijin a écrit:

pourquoi ne pas utiliser le format std qui est similaire aussi lisible et qui ne demande rien ??

Code:

/module/controller/action/key1/param1/key2/param2/ ...

je ne vois pas l'utilité de changer un / en =

Comme je le précisait dans mon post, c'est surtout pour avoir plus de lisibilité, en particulier quand l'URL à beaucoup de paramètres.
(séparer clairement les clés des valeurs)

Sur #zftalk, on m'a répondu comme toi: pourquoi faire?
C'est vrai que key=param, ça fait un peu 'années 90' mais c'est ce que je recherche;)

Debutant sur ZF j'ai pensé que je pouvait faire un plugin pour rerouter de cette manière.
(exploser l'URL selon '/' puis créer un tableau avec les couples key/value et rerouter)
Mais peut être est ce du code inutile si le même résultat est réalisable avec les routes regexp.

En fait je n'ai aucun problème pour dans mon application récupérer la liste de mes paramètres, ou pour savoir qu'est ce qui est une clé, et qu'est ce qui est une valeur

Je fait une barre de navigation en haut de mon application qui ressemble à ceci:
http://img231.imageshack.us/img231/8403/urlwe4.jpg

pour information et si ça interesse du monde, le code est le suivant:

dans indexController:

Code:

public function headerAction() {
        $this->_helper->viewRenderer->setResponseSegment ( 'header' );
        $this->view->params = ($this->getFrontController ()->getRequest ()->getParams ());
    }

dans header.phtml:

Code:

<div class="nav"><a class="ai1"
    href="<?=$this->url ( array ('module' => $this->params ['module'] ), 'default', true );?>">
    <?=$this->params ['module']?>/</a>
    <?php
    if ($this->params ['controller'] != 'index') {
        ?>
    <a class="ai2"
    href="<?=$this->url ( array ('module' => $this->params ['module'], 'controller' => $this->params ['controller'] ), 'default', true );?>">
        <?=$this->params ['controller']?>/</a>
    <?php
    }
    if ($this->params ['action'] != 'index') {
        ?>
    <a class="ai3"
    href="<?=$this->url ( array ('module' => $this->params ['module'], 'controller' => $this->params ['controller'], 'action' => $this->params ['action'] ), 'default', true );?>">
        <?=$this->params ['action']?>/</a>
    <?php
    }
    foreach ( $this->params as $pkey => $pvalue ) {
        if ($pkey != 'module' && $pkey != 'controller' && $pkey != 'action') {
            ?>
             <a class="ai4"
    href="<?=$this->url ( array ('module' => $this->params ['module'], 'controller' => $this->params ['controller'], 'action' => $this->params ['action'], $pkey => $pvalue ), 'default', true );?>">
             <?=$pkey . '=' . $pvalue;?>/
             </a>
    <?php
        }
    }
    ?>    
    </div>

Cdt, Laurent.

Dernière modification par mstrl (15-09-2008 13:41:22)

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