Action :
Routes
Sommaire |
Les routes
Les routes sont la façon dont nano interprète l'URL pour exécuter les actions de ses controleurs.
Imaginons que vous ayez une application installée sur le domaine mondomaine.com, pour exécuter ses actions, Nano interprètera automatiquement l'URL que vous entrez pour en extraire le controleur, l'action et les paramètres.
Configuration classique
Pour cela un système de décodage de l'url à été mis en place. C'est assez simple et paramétrable grâce au fichier configuration/route.php. Les deux premier defines permettent de configurer le contrôleur et l'action par défaut, ensuite le tableau des routes permet de configurer chaque cas de figure :
'localized' => 'route' =>'/:lang/:controller/:action', 'params'=>'' ), );
Vous pouvez ajouter autant de routes que vous le souhaitez mais il faut garder à l'esprit que nano choisira d'utiliser la première route qui correspondra aux critères.
Pour définir un de ces paramètres il suffit de l'ajouter à la route un paramètre avec un : devant son nom comme dans la route par défaut : /:controller/:action. Si vous voulez par exemple ajouter le paramètre id à cette route il convient de l'écrire ainsi : /:controller/:action/:id et le paramètre id sera disponible dans l'objet request.
Mais dans notre exemple, on se rend compte qu'il y a deux routes avec trois paramètres et seule la première sera utilisée pour le décodage, le mieux est donc d'ajouter le paramètre id à la première route ce qui fait au final :
'localized' => 'route' =>'/:lang/:controller/:action/:id', 'params'=>'' ), );
Configuration avec des paramètres fixes
Vous pouvez aussi définir des paramètres fixes dans vos routes. Par exemple :
'route' => '/anniversaire/:nom/:date', 'controller' => 'anniversaire', 'action' => 'fete' )
Aura pour effet de détecter les routes du type http://monsite.fr/anniversaire/stephane/1804 et de l'associer à l'action fete du contrôleur anniversaire avec les paramètres nom et date égaux respectivement à stephane et 1804.
Paramètres additionnels
Les paramètres additionnels sont ajoutés de façon très classique : http://...URL..?parametre=valeur¶metre=valeur
Nano met les différentes variables extraites à votre disposition dans des variables globales :
- le controleur dans $GLOBALS['env']['controller']
- l'action dans $GLOBALS['env']['action']
Et les paramètres décodés ou non dans l'objet request mais Attention, si vous passez une variable qui à le même nom à la fois via un get, un post ou dans la route la variable issue du post sera prioritaire. L'ordre de priorité est : post, route puis get.


