Aller au contenu principal
Version: 0.7.3

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 sera elementum.router|plugin.index
add_filter('elementum.router|plugin.index', function($path) {
    // Modifier le chemin si nécessaire
    return '/nouveau-chemin';
});