2012-12-28 1 views
1

Ainsi, j'ai essayé de trouver des trucs en ligne à ce sujet, mais nulle part dans la documentation il n'y a quoi que ce soit concernant les barres obliques dans les URL. Voici mon problème.Trailing Slashes dans l'URL

Je souhaite que toutes les URL se terminent par une barre oblique et, éventuellement, les redirigent si elles ne le sont pas. Maintenant, mon code fonctionne avec et sans une barre oblique, mais je reçois deux résultats différents quand je var_dump($this->dispatcher->getParams());

Voici mon code pour la route

<?php 
    // for brevities sake, it's only the route 

    $router->add('/:controller/:action/:id/', array(
     'controller' => 1, 
     'action'  => 2, 
     'id'   => 3 
    )); 

Maintenant que slash je il ne vraiment pas faire quoi que ce soit, alors je l'ai juste laissé. Pour l'URL /user/view/13/, voici la var_dump pour $this->dispatcher->getParams():

array(2) { 
    [0]=> 
    string(2) "13" 
    [1]=> 
    string(0) "" 
} 

Si je lance l'URL /user/view/13 (sans slash), voici la var_dump pour $this->dispatcher->getParams():

array(2) { 
    [0]=> 
    string(2) "13" 
} 

Essentiellement, est-il un moyen que je peux obtenir Phalcon pour mettre fin à la barre oblique, de sorte que j'obtenir les mêmes résultats? Ou devrais-je potentiellement écrire une classe de routage personnalisée? Toute aide serait appréciée!

Répondre

3

Pour les versions < = 0.7.0, vous pouvez ajouter une option/l'expression régulière dans chaque itinéraire:

$router->add('/:controller/:action/:id[/]{0,1}', array(
    'controller' => 1, 
    'action'  => 2, 
    'id'   => 3 
)); 

Note:: id n'est pas un espace réservé valide dans Mvc \ Router au lieu de vous peut utiliser: int

A partir de 0.8.0, vous pouvez activer la correction automatique des barres obliques de fuite:

$router->removeExtraSlashes(true); 
+0

C'est exactement ce que je cherchais. Je vous remercie! –