1. Description du problème
Lorsque nous utilisons ThinkPHP pour le développement, nous rencontrons parfois une telle situation : lorsque nous effectuons certaines opérations de routage, la page ne saute pas à l'interface attendue.
Par exemple, nous souhaitons accéder à la méthode "do" dans "HomeController.php" via l'URL "www.example.com/home/do", mais nous ne pouvons en fait pas accéder à cette méthode. Dans le même temps, nous avons constaté qu’aucun message d’erreur n’apparaissait, ce qui nous empêchait de démarrer.
2. Analyse des causes
Dans ThinkPHP, les itinéraires sont mis en correspondance via les suffixes d'URL. Si nous n'utilisons aucun suffixe dans notre URL, alors ThinkPHP pensera que la méthode à laquelle nous voulons accéder est la méthode par défaut dans le contrôleur (le nom de la méthode par défaut est généralement "index").
Par exemple, lorsque nous utilisons l'URL "www.example.com/home/index", la méthode "index" dans "HomeController.php" sera accessible par défaut.
Lorsque nous utilisons l'URL "www.example.com/home/do", parce qu'aucun suffixe n'est utilisé, ThinkPHP pensera que nous accédons à la méthode "index", et parce que la méthode "do" n'existe pas dans Dans le contrôleur, cela entraînera l’échec de l’accès à la page.
3. Solution
1. Utilisez le suffixe "/"
Si vous ajoutez une barre oblique "/" à la fin de l'URL, vous pouvez éviter les incohérences de routage. Par exemple, nous pouvons utiliser l'URL « www.example.com/home/do/ » pour accéder à la méthode « do » dans « HomeController.php ».
En même temps, lorsque nous utilisons ThinkPHP pour le développement, il est recommandé de définir le suffixe de l'URL sur "/" dans le fichier de configuration config.php, afin d'éviter le problème des routes non converties.
2. Modifier les règles de routage
Nous pouvons également résoudre le problème en modifiant les règles de routage.
Tout d'abord, dans notre fichier de configuration de routage (généralement route.php), nous pouvons définir les règles de routage comme :
return [ 'home/do/[:id]' => 'home/[:action]', ];
De cette façon, nous pouvons transmettre l'URL "www.example.com/home/do/1" à accédez à la méthode "do" dans "HomeController.php" et transmettez un paramètre id dans l'URL.
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!