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.
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();
}
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é.
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.)