Utilisation des paramètres dans les routes en MVC en PHP
Examinons l'application de ce qui a été décrit sur
un exemple plus concret. Supposons que notre contrôleur
PageController contienne un tableau de pages
(ces données devraient être fournies par le modèle, mais nous
n'avons pas encore abordé les modèles, donc laissons
les données stockées dans le contrôleur pour l'instant) :
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
Créons une action show qui
affichera à l'écran la page avec un numéro
spécifique (id) :
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// ici nous afficherons la page avec un numéro spécifique
}
}
?>
Supposons que l'accès à l'adresse /page/1/
affiche le texte de la première page,
l'accès à l'adresse /page/2/ -
le texte de la deuxième page, et ainsi de suite. Créons
la route correspondante :
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Implémentons la méthode décrite show :
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // affiche la page par numéro
}
}
?>
Implémentez le contrôleur UserController,
contenant le tableau suivant :
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
Dans le contrôleur UserController, créez
une action show qui affichera
l'utilisateur par un id spécifique. Qu'elle
soit accessible via une adresse de type :
/user/:id/.
Dans le contrôleur UserController, créez
une action info qui affichera
le nom ou l'âge d'un utilisateur donné. Que cette
action soit accessible via une adresse de type :
/user/:id/:key/, où key
aura la valeur 'name', 'age'
ou 'salary'.
Dans le contrôleur UserController, créez
une action all qui affichera
la liste de tous les utilisateurs à l'écran. Que cette action
soit accessible via une adresse de type :
/user/all/ (aucun paramètre ici).
Dans le contrôleur UserController, créez
une action first qui affichera
la liste des N premiers utilisateurs à l'écran. Que cette
action soit accessible via une adresse de type :
/user/first/:n/, où le paramètre
contiendra le nombre d'utilisateurs à
afficher à l'écran.