Routage dans CodeIgniter 4 : routes explicites et routage automatique Improved
Définir les routes GET et POST, les contrôleurs et paramètres de CodeIgniter 4 ; configurer correctement le routage Improved et connaître ses limites.
Le routeur associe une URL et une méthode HTTP à un contrôleur. Les routes explicites montrent les actions accessibles ; Improved Auto Routing est une autre option à configurer volontairement. Vérifiez la version de CodeIgniter installée avant d’utiliser ces exemples inspirés de la documentation récente.
Définir des routes explicites
Ajoutez les routes à l’objet $routes déjà disponible dans app/Config/Routes.php. Importez Products ; utilisez GET pour lire et POST pour créer. (:num) capture un segment numérique transmis à show. Ces trois routes forment un exemple cohérent ; adaptez noms et permissions à votre projet.
<?php
// app/Config/Routes.php
use App\Controllers\Products;
$routes->get('products', [Products::class, 'index']);
$routes->get('products/(:num)', [Products::class, 'show']);
$routes->post('products', [Products::class, 'create']);
Écrire le contrôleur
Créez app/Controllers/Products.php avec l’espace de noms App\Controllers. Les méthodes publiques liées aux routes renvoient une réponse ; helperMethod est protégée et ne représente pas une action accessible. Les données renvoyées ici sont fictives : ajoutez validation, stockage et contrôles d’accès avant toute création réelle.
<?php
// app/Controllers/Products.php
namespace App\Controllers;
class Products extends BaseController
{
public function index(): string
{
return 'Products';
}
public function show(int $id): string
{
return 'Product ' . $id;
}
public function create()
{
return $this->response->setStatusCode(201)->setJSON(['created' => true]);
}
protected function helperMethod(): void
{
// Internal logic.
}
}
Protéger les actions
Employez GET pour consulter et POST pour modifier. Sécurisez les actions sensibles par authentification et autorisation, validez les entrées et configurez la protection CSRF des formulaires selon le projet. Définir une route ne protège pas à lui seul son contrôleur.
Improved Auto Routing comme solution de remplacement
Activez $autoRoute=true dans app/Config/Routing.php et $autoRoutesImproved=true dans app/Config/Feature.php. Les méthodes accessibles commencent par un verbe HTTP : getHello() peut traiter GET /hello-world/hello dans HelloWorld. La route par défaut vers Home::index peut empêcher le routage automatique de / ; retirez-la si la racine doit être résolue automatiquement. Les extraits ci-dessous concernent des fichiers distincts et illustrent un autre mode ; vérifiez la priorité avant de les associer aux routes explicites de l’exemple.
// app/Config/Routing.php
public bool $autoRoute = true;
// app/Config/Feature.php
public bool $autoRoutesImproved = true;
// Example auto-routed method: GET /hello-world/hello
public function getHello(): string { return 'Hello'; }
Noms, segments et limites
La correspondance des segments avec contrôleurs et méthodes dépend de la version installée. Préférez les routes explicites pour des URL publiques stables ou un contrôle précis des méthodes et filtres. Ne rendez pas accessibles par mégarde les méthodes publiques ou actions d’administration.
Vérifier les routes
Exécutez php spark routes pour voir les routes enregistrées ; testez aussi des requêtes GET et POST autorisées ou interdites, les réponses 404/405, l’ordre et les filtres. Les routes découvertes dynamiquement ne figurent pas forcément parmi les routes explicites.
php spark routes
Sources officielles
Routage : https://codeigniter4.github.io/CodeIgniter4/incoming/routing.html ; Improved Auto Routing : https://codeigniter4.github.io/CodeIgniter4/incoming/auto_routing_improved.html ; contrôleurs : https://codeigniter4.github.io/CodeIgniter4/incoming/controllers.html .
Partager
Quelle est votre réaction ?
Aimer
0
Je n'aime pas
0
Amour
0
Drôle
0
En colère
0
Triste
0
Waouh
0