Maison >développement back-end >tutoriel php >Comment CakePHP effectue-t-il la redirection d'itinéraire ?

Comment CakePHP effectue-t-il la redirection d'itinéraire ?

王林
王林original
2023-06-04 23:11:02970parcourir

CakePHP est un framework PHP MVC populaire pour la création d'applications Web. Dans CakePHP, le routage est le processus de conversion des URL d'accès en contrôleurs et actions correspondants dans votre application. Parfois, nous devons rediriger une URL spécifique afin que l'URL visitée par l'utilisateur puisse être correctement mappée à l'itinéraire spécifié dans l'application. Cet article explique comment effectuer une redirection de route dans CakePHP.

  1. Utiliser le routage de redirection

Le routage de redirection fait référence à un mécanisme qui redirige une URL vers une autre URL pendant la phase de routage du moteur. Dans CakePHP, nous pouvons utiliser la méthode Router::redirect() pour implémenter la redirection de route. Cette méthode accepte deux paramètres : l'URL vers laquelle rediriger et l'URL vers laquelle rediriger. Par exemple, pour rediriger l'accès à "/about" vers "/pages/about", vous pouvez utiliser le code suivant :

Router::redirect('/about', '/pages/about');

Le code ci-dessus correspondra à l'URL "/about" puis le redirigera vers "/pages/about ". Ce code peut être ajouté dans le fichier routes.php pour assurer la redirection de route n'importe où dans l'application.

Si vous souhaitez rediriger une requête spécifique vers une URL complètement différente, vous pouvez fournir l'URL complète dans le deuxième paramètre. Par exemple :

Router::redirect('/old-page', 'http://www.example.com/new-page');

Le code ci-dessus correspondra à l'URL "/old-page" et le redirigera vers "http://www.example.com/new-page".

  1. Utilisation d'expressions régulières

Le routeur de CakePHP prend également en charge l'utilisation d'expressions régulières pour faire correspondre des URL spécifiques. Les expressions régulières sont un mécanisme flexible de correspondance de modèles qui peut capturer différents types de valeurs dans les URL. Afin d'utiliser le routage par expression régulière, vous devez utiliser la méthode Router::connect() et fournir le modèle d'URL dans le premier paramètre, qui doit être une expression régulière. Par exemple, le code suivant correspondra à toutes les URL commençant par "/view/" et suivies d'un nombre, et transmettra ce numéro en tant que paramètre à l'action de vue du contrôleur de vue :

Router::connect(
  '/view/:id',
  array('controller' => 'view', 'action' => 'view'),
  array('id' => '[0-9]+')
);

Le code ci-dessus correspondra à quelque chose comme " /view/123 " URL comme celle-ci et transmettez le numéro "123" comme paramètre à l'opération d'affichage du contrôleur View. Vous pouvez utiliser des expressions régulières dans votre routeur pour implémenter diverses redirections d'itinéraire.

  1. Utilisation de Modifier le routeur par défaut

Dans les applications CakePHP, le routeur par défaut est le principal mécanisme de mappage des URL aux contrôleurs et aux actions de l'application. Cependant, vous pouvez utiliser la classe Route pour personnaliser le routeur de base et le comparateur d'URL. Vous pouvez accéder à la liste actuelle des routeurs à l'aide de la propriété Router::$routes, et vous pouvez ajouter ou modifier la liste actuelle des routeurs à l'aide des méthodes Router::connect() et Router::redirect(). Vous pouvez également recharger la liste des routeurs à l'aide de la méthode Router::reload().

Par exemple, le code suivant utilisera un routeur personnalisé pour personnaliser une redirection d'URL spécifique :

class CustomRouter extends CakeRoute {
  function parse($url) {
    if ($url == '/old-page') {
      $this->redirect('/new-page');
    }
    return parent::parse($url);
  }
}

Router::connect('/old-page', array('controller' => 'pages', 'action' => 'display'));
Router::$routes[] = new CustomRouter('/new-page', array('controller' => 'pages', 'action' => 'about'));

Le code ci-dessus correspondra à l'URL "/old-page" et le redirigera vers "/new-page". Ceci est réalisé en définissant la classe CustomRouter et en remplaçant sa méthode parse(). La méthode parse() fait partie de la classe CakeRoute et est généralement utilisée pour analyser les URL et les convertir en contrôleurs et actions. Dans l'exemple ci-dessus, nous avons étendu la méthode pour implémenter le comportement de redirection d'un routeur personnalisé.

Résumé

Voici quelques méthodes de redirection d'itinéraire dans CakePHP. En utilisant le routage de redirection, les expressions régulières et les routeurs personnalisés, vous pouvez personnaliser le comportement de routage de votre application et gérer les redirections d'URL. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn