# Routes

## Introduction

Pour commencer intéressons nous à la base du framework, les routes. En effet, toutes les urls étant redirigées vers le script index.php, il faut indiquer au router quel chemin appel quel contrôleur. Pour ce faire dans le dossier `app` , vous avez normalement un fichier **routes.php**, ouvrez le.

Vous devez trouver le code suivant (sans les commentaires):

{% code title="/app/routes.php" %}

```php
return [
"/|any>home" => "MainController@Index",
];
```

{% endcode %}

Cette ligne (2) indique que lorsque l'url demandée est **/** et que la requête est de type **GET** ou **POST** (d'où le **any**) alors cette route est appelé **home** et la méthode **Index** du contrôleur **MainController** est appelée.

{% hint style="danger" %}
Attention le `return` et le `[`et `]` au début et à la fin sont très importants. Ne pas oublier de séparer chaque route par une `,`
{% endhint %}

## Forme générale

On peut donc écrire une route plus généralement selon la forme :

```php
"Chemin|type>nom" => "Contrôleur@methode"
```

## Champ variable

Imaginons que vous souhaitez avoir une url avec un champ variable tel que l'id d'un article par exemple.\
Il faut alors faire comprendre au routeur que :\
/article/3\
/article/78\
redirige vers la même route.\
Pour ce faire on utilise les accolades { et } dans lesquelles on insère le nom du champ que l'on récupérera plus tard :

```php
"/article/{id}|any>montrer_article" => "MyController@Montrer"
```

{% hint style="danger" %}
Tout espaces sera supprimé donc si votre nom de route est `ma route`alors son vrai nom sera `maroute`. Si vous souhaitez séparer deux mots utilisez alors le **\_** .
{% endhint %}

## Redirection

Si vous souhaitez rediriger vos visiteurs vers une autre route alors vous devez taper :

```php
"Chemin|type>nom" => "nom_route_a_rediriger"
```

Par exemple si on souhaite que les visiteurs de `/oldpage` soit redirigés vers `/newpage`.

```php
"/newpage|any>new" => "MyController@new",
"/oldpage|any>old" => "new"
```

{% hint style="info" %}
Toutes les redirections sont des redirections permanentes (301).
{% endhint %}
