Route
L'attribut Route permet de définir des points d'entrée personnalisés dans votre application, en créant des URLs qui ne dépendent pas des post-types WordPress standards.
Utilisation de base
app/Controllers/MyController.php
use Elementum\Http\Request; use Elementum\Attributes\Route; class MyController extends Controller { #[Route('/plugin', name: 'plugin.index', methods: ['GET'])] public function index(Request $request) { return $this->render('index.html.twig', [ 'title' => 'Elementum Plugin', 'content' => 'Hello from Elementum Plugin', ]); } }
Paramètres
Paramètres obligatoires
path
- Type :
string - Description : Chemin de l'URL de la route
- Exemple :
'/mon-chemin','/api/v1/resource' - Remarque : Doit commencer par un
/
name
- Type :
string - Description : Nom unique identifiant la route
- Exemple :
'app_home','api_user_profile' - Remarque : Utilisé pour générer des URLs avec
$this->generateUrl()
Paramètres optionnels
methods
- Type :
array - Défaut :
['GET'] - Description : Méthodes HTTP acceptées par la route
- Valeurs possibles :
'GET','POST','PUT','DELETE','PATCH','HEAD','OPTIONS' - Exemple :
['GET', 'POST']
Exemples avancés
Route avec plusieurs méthodes
#[Route('/api/users', name: 'api.users', methods: ['GET', 'POST'])] public function users(Request $request) { if ($request->isMethod('POST')) { // Traitement de la création d'utilisateur } // Traitement de la liste des utilisateurs }
Route avec paramètres dynamiques
#[Route('/article/{slug}', name: 'article.show')] public function showArticle(string $slug, Request $request) { // $slug contiendra la valeur dynamique de l'URL // Par exemple, pour l'URL '/article/mon-article', $slug = 'mon-article' }
Route avec contraintes de validation
#[Route('/user/{id}', name: 'user.profile', requirements: ['id' => '\d+'])] public function userProfile(int $id) { // L'ID doit être un nombre (\d+) }
Bonnes pratiques
- Nommage : Utilisez une convention de nommage cohérente (ex:
'app_route_name') - Verbes HTTP : Respectez la sémantique des méthodes HTTP (GET pour la lecture, POST pour la création, etc.)
- Sécurité : Validez toujours les entrées utilisateur, même dans les paramètres de route
- Documentation : Commentez les routes complexes ou nécessitant une attention particulière
Filtres de route
Chaque route génère automatiquement un filtre WordPress qui peut être utilisé pour modifier son comportement :
- Format :
elementum.router|{name} - Paramètre : Le chemin de la route (peut être modifié via le filtre)
- Exemple : Pour une route nommée
plugin.index, le filtre seraelementum.router|plugin.index
add_filter('elementum.router|plugin.index', function($path) { // Modifier le chemin si nécessaire return '/nouveau-chemin'; });