NANO-FRAMEWORK.COM

Framework PHP Objet UML

Navigation
HOWTO
Boîte à outils
Outils personnels
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 :

  1. $GLOBALS['env']['routes'] = array(
  2. 'localized' =>
  3. 'route' =>'/:lang/:controller/:action',
  4. 'params'=>''
  5. ),
  6.  
  7. 'default' => array('route' => '/:controller/:action')
  8. );

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 :

  1. $GLOBALS['env']['routes'] = array(
  2. 'localized' =>
  3. 'route' =>'/:lang/:controller/:action/:id',
  4. 'params'=>''
  5. ),
  6.  
  7. 'default' => array('route' => '/:controller/:action/:id')
  8. );

Configuration avec des paramètres fixes

Vous pouvez aussi définir des paramètres fixes dans vos routes. Par exemple :

  1. 'anniversaire' => array(
  2. 'route' => '/anniversaire/:nom/:date',
  3. 'controller' => 'anniversaire',
  4. 'action' => 'fete'
  5. )

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&parametre=valeur

Nano met les différentes variables extraites à votre disposition dans des variables globales :

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.

Récupérée de « http://wiki.nano-framework.com/index.php/Routes »