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]