Aller au contenu principal

Rooting

MattaPHP permet de gérer les routes via le fichier app/routes/web.php, où est géré le Controller de la route, sa méthode et aussi son nom qui permettra de l'appeler plus tard. Il est possible de faire deux types de routes : simple et dynamique.

Route simple

Création de la route

Pour créer une route simple il suffit de se rendre dans le fichier app/routes/web.php et y ajouter comme ceci :

Route::get(['/home', 'App\Controller\HomeController@index'])->name('app_index');

Nous créons donc la route /home, il faut donc créer le fichier app/controller/HomeController.php et la méthode index.

Création du controller app/controller/HomeController.php :

use App\Controllers\Controller;

class HomeController extends Controller
{
public function index()
{
return view('pages/home.php', []);
}
}

Nous créons donc notre fonction qui va retourner une vue php, qu'il faudra préalablement créer dans le dossier templates comme ceci templates/pages/home.php où on pourra mettre notre code html / php.

Appel de la route

Pour appeler notre route depuis une vue, nous pouvons faire comme ceci :

<a href="<?= route('app_index') ?>">Home</a>

Route dynamique

MattaPHP permet aussi de faire des routes dynamiques en tout genre, qui permettra de rendre plus agréable vos applications à developper. Pour créer votre route dynamique, c'est identique à la route simple il faut juste rajouter votre paramètre comme celui-ci par exemple id_user.

Route::get(['/user/{id_user}', 'App\Controller\UserController@edit'])->name('app_user_edit');

Création du controller app/controller/UserController.php :

use App\Controllers\Controller;

class UserController extends Controller
{
public function edit(int $id_user)
{
return view('pages/user/edit.php', [
'id_user' => $id_user
]);
}
}

Une fois ceci fait nous pouvons voir que nous renvoyons l'id_user dans le template pour pouvoir l'utiliser comme ceci :

<h1>Bonjour user id : <?= $id_user ?></h1>

Appel de la route

Pour appeler notre route depuis une vue, nous pouvons faire comme ceci :

<a href="<?= route('app_index', ['id_user' => 1]) ?>">Home</a>

Redirection

Il est aussi possible de faire des redirections dans les controller :

redirect('app_index')

# ou avec une variable
redirect('app_user_edit', ['id_user' => $id_user]