Guide Utilisateur Version 1.7.2


Routage d'URI

Il existe une relation directe entre la chaine de l'URL et la classe/méthode du contrôleur correspondant. Normalement, les segments d'une URI respect le modèle suivant

example.com/class/function/id/

Cependant, dans certains cas, vous pourrez avoir besoin de redéfinir cette relation afin d'appeler une autre classe ou fonction à la place de celle prévue par l'URL.

Par exemple, admettons que vous souhaitiez des URLs de ce type :

example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/

Normalement le second segment de l'URL est réservé au nom de la fonction, mais dans cet exemple il s'agit d'un ID de produit. Pour remédier à cela, CodeIgniter vous permet de redéfinir la gestion des URI.

Configurer vos Propres Règles de Redirection

Les règles de routage sont définies dans le fichier application/config/routes.php dans lequel vous trouverez un tableau appelé $route qui vous permettra de spécifier vos propres critères de routage. Ces routes peuvent contenir des jokers ou des expressions régulières.

Jokers

Une redirection de type jokers ressemblera le plus souvent à ça :

$route['product/:num'] = "catalog/product_lookup";

Un redirection est gérée par tableau. La partie clés du tableau contient les URI cibles, celles à qui s'adresse l'URL originale. La partie valeurs contient la nouvelle destination vers laquelle rediriger l'appelle originale. Dans l'exemple ci-dessus, si le mot "product" est trouvé dans le premier segment de l'URL et un chiffre est trouvé dans le second segment alors la classe "catalog" et la fonction "product_lookup" seront appelées à la place.

Vous pouvez faire correspondre littéralement des valeurs ou utiliser des jokers comme suit :

:num
:any

:num correspondra à un segment uniquement composé de nombres.
:any correspondra à un segment composé de n'importe quel caractère.

Remarque : Les routes seront traitées dans l'ordre séquentiel de leur définition. Les routes définies en haut de liste seront traitées avant les dernières.

Exemples

Voici quelques exemples de redirection :

$route['journals'] = "blogs";

Une URL contenant le mot "journals" dans le premier segment sera redirigée vers la classe "blog".

$route['blog/joe'] = "blogs/users/34";

Une URL contenant le segment blog/joe sera redirigée vers la classe "blog" et la fonction "users". L'ID sera renseigné avec la valeur "34".

$route['product/:any'] = "catalog/product_lookup";

Une URL avec "product" comme premier segment et n'importe quoi dans le second sera redirigé vers la classe "catalogue" et la méthode "product_lookup".

$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

Une url avec comme premier segment "product" et quoique ce soit dans le deuxième, sera redirigée vers la fonction "product_lookup_by_id" de la classe "catalog", en passant le contenu du deuxième segment (:num) comme variable à la fonction.

Important : Ne renseignez pas les slash de début et de fin.

Expressions Régulières

Si vous préférez, vous pouvez utiliser les expressions régulières pour définir vos règles de redirection. Elles sont toutes autorisées, comme le sont les références arrières.

Important : Si vous utilisez les références arrières vous devez employer le dollar ($) à la place des doubles backslash.

Une redirection de type RegEx pourrait ressembler à ça :

$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";

Dans l'exemple ci-dessus; l'URI products/shirts/123 appellera la fonction id_123 du contrôleur shirts.

Vous pouvez aussi combiner l'utilisation des jokers et des expressions régulières.

Routes Réservées

Il existe deux routes réservées :

$route['default_controller'] = 'welcome';

Cette route précise le contrôleur à charger dans le cas d'une URI sans information comme dans le cas de l'URL racine. Dans cet exemple, la classe "welcome" sera chargée. Nous vous invitons à toujours définir une route par défaut autrement une page 404 s'affichera.

$route['scaffolding_trigger'] = 'scaffolding';

Cette route vous permet de renseigner un mot secret déclenchant le scaffolding lorsqu'il est présent dans l'URL. Référez-vous à la page Le Scaffolding pour plus d'informations.

Important : Ces routes réservées doivent être traitées avant n'importe quelles routes contenant des jokers ou des expressions régulières.