Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour
J'aimerai utiliser une route au format:
/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
pourquoi ne pas utiliser le format std qui est similaire aussi lisible et qui ne demande rien ??
/module/controller/action/key1/param1/key2/param2/ ...
je ne vois pas l'utilité de changer un / en =
il me semble que
/module/controller/action/key[]/param1/key[]/param2/key[]/param/ ...
te permets de faire un
$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
/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
$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
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:
pour information et si ça interesse du monde, le code est le suivant:
dans indexController:
public function headerAction() { $this->_helper->viewRenderer->setResponseSegment ( 'header' ); $this->view->params = ($this->getFrontController ()->getRequest ()->getParams ()); }
dans header.phtml:
<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
Pages: 1