A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

5.8. Autres types de routes

Il existe d'autres types de route : Hostname, Scheme et Method, qui sont utilisés moins fréquemment que ceux mentionnés précédemment.

5.8.1. Hostname

Le type de route Hostname peut être utilisé, par exemple, si vous développez un moteur de système de gestion de contenu (CMS) 7, qui devrait desservir plusieurs sites internet à la fois, chaque site utilisant un sous-domaine différent. Dans ce cas, vous définissez la route Hostname en tant que parent et imbriquez les routes enfants d'autres types à l'intérieur de celle-ci :

7) Un CMS (système de gestion de contenu) est un site permettant la création, l'édition et la publication de contenu collaboratif (blogs, pages, documents, vidéos, etc.) à l'aide d'une interface web centralisée. Les systèmes CMS permettent aux non-programmeurs d'effectuer des tâches quotidiennes du site comme la publication de contenu.

'routename' => [
    'type' => Hostname::class,
    'options' => [
        'route' => ':subdomain.yourserver.com',
        'constraints' => [
            'subdomain' => '[a-zA-Z][a-zA-Z0-9_-]*'
        ],
        'defaults' => [        
        ],
    ],
    'child_routes'=>[
        //...
    ],
],

Dans l'exemple ci-dessus, à la ligne 1, nous définissons une route de type Hostname. L'option route (ligne 4) définit le nom de domaine à comparer. Le :subdomain est un caractère générique qui peut prendre différentes valeurs de sous-domaine. La clé constraints définit l'expression régulière à laquelle ce paramètre de sous-domaine doit correspondre. La route Hostname différenciera vos domaines de facon à ce que chaque site se comportera différemment en fonction de la valeur du paramètre subdomain retourné :

// Un exemple d'action utilisant des paramètres renvoyés par
// une route Hostname.
public function someAction() 
{
    // On récupère le paramètre 'subdomain' de la route.
    $subdomain = $this->params()->fromRoute('subdomain', null);
  
    // On utilise une logique différente basée sur le sous-domaine.
    //... 
        
    // On retourne la vue
    return new ViewModel();
}

5.8.2. Scheme

Le type de route Scheme est utile si vous devez gérer les protocoles HTTP et HTTPS 8 de facon différentes.

8) Le protocole HTTPS est généralement utilisé pour les connexions sécurisées comme une page Mon compte ou une page de panier. Lorsque vous utilisez HTTPS, les données de la demande sont tunnellisées via le canal SSL (Secure Socket Layer) et non disponibles pour des tiers.

La configuration de route Scheme est présentée ci-dessous :

'routename' => [
    'type' => Scheme::class,
    'options' => [
        'scheme' => 'https',
        'defaults' => [
            'https' => true,
        ],    
    ],
    'child_routes'=>[
        //...
    ],
],

Ci-dessus, nous définissons la route de type Scheme. Elle prend l'option scheme qui doit correspondre au système (comme http ou https). Si le schéma dans l'URL de la requête HTTP est exactement le même que l'option scheme, la route est considéré comme correspondante. Vous pouvez utiliser la clé defaults pour renvoyer certains paramètres lors du matching de route. Dans l'exemple ci-dessus, le paramètre booléen https sera renvoyé.

5.8.3. Method

Le type de route Method peut être utilisé si vous avez besoin de diriger des requêtes GET et POST dans les actions de différents contrôleurs. Sa configuration typique est présentée ci-dessous :

'routename' => [
    'type' => Method::class,
    'options' => [
        'verb' => 'post',
        'defaults' => [        
        ],
    ],
    'child_routes'=>[
        //...
    ],
],

Ci-dessus, nous définissons une route de type Method. Elle prend l'option verb qui est une liste séparée par des virgules de verbes HTTP acceptables (comme get, post, put, etc.)


Top