4 votes

Routage des URLs commençant par un caractère spécial

Dans ZendFramework, je veux router les urls commencées avec ~ au contrôleur et à l'action spéciaux, de sorte que les autres urls ne commencent pas par ~ fonctionnent correctement.

Par exemple, voir ci-dessous deux routages d'url :

mysite.com/~user

et

mysite.com/admin

Comment puis-je faire cela ?

1voto

Jake N Points 6408

Essayez et utilisez ceci dans votre Bootstrap

// Get the instance of the router
$router = Zend_Controller_Front::getInstance()->getRouter();

// Set up a new regex router to match routes starting with ~
$route = new Zend_Controller_Router_Route_Regex(
    '(^\~)',
    //This route should use a 'special' controller
    array(
        'controller' => 'special',
        'action'     => 'index'
    )
);

// Add the new route to the router
$router->addRoute('archive', $route);

Vous aurez besoin d'un contrôleur appelé Special pour répondre aux requêtes acheminées vers ce routeur.

-1voto

dbers Points 392

Je ne suis pas sûr de la spécificité de zend, mais la meilleure façon de le faire serait d'ajouter une table de consultation de hachage avant que le routeur d'URL ne fasse son travail.

Disons que mod_rewrite convertit ceci : mysite.com/~user

à ceci : mysite.com/index.php?path=~user

alors vous feriez quelque chose comme ça :

$path = $_GET['path'];

$url_mod = array(
  '~user'=>'my_other_controller',
  'admin'=>'my_other_controller',
);

if(isset($url_mod[$path)) {
 $path = $url_mod[$path]; 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X