TP6 programmation WEB côté serveur

Notions à mettre en place

Mise en place d'un Front controller routeur
 

Application du pattern FrontController et utilisation d'un routeur

A. Utilisation du routeur vu en cours et TD

Reprenez ce projet et faites le tourner sur votre machine.

index.php est une sorte de front controller très très basique mais qui fait une partie routage. Il utilise deux routes :

Le code vous affiche le détail de l'interprétation des routes quand vous appellez votre application web avec l'URL http://localhost/routeur/...
Une seul controlleur basique est inclus
Donc si vous appellez votre application avec par exemple /user/2/add cela va appeler le contrôleur UserController avec l'action add et la variable i.

Ajoutez à l'URL une variable page pour pourvoir gérer la pagination par la suite;
Testez avec une route de plus, etc.

B. Reprise de votre projet de SAE avec le routeur

Ajoutez les fichiers Alto*** et le répertoire danny*** dans votre projet ou mieux utilisez Composer ! voir ici


Commencez par lister les routes que vous devez avoir pour votre projet. Voilà un exemple :

$router->map('GET|POST', '/user/[i:page]/[a:action]?', 'UserController');
$router->map('GET|POST', '/login/', '/vue/login.php');
$router->map('GET|POST', '/admin/[i:page]/[a:action]?', 'AdminController');

Reprenez ce qui a été fait en TD et codez un algorithme de Front Controller avec Altorouter qui route vers des contrôleurs cibles suivant l'URL donné ET vérifie que l'utilisateur a les droits d'appeler ce contrôleur (s'il a besoin d'être connecté, l'est-il ? ex avec isAdmin() vus en TD).

Votre Front controller devrait aussi avoir une méthode callController() qui doit vérifier que le controlleur ciblé existe (voir is_callable()) et l'apelle (voir call_user_func_array())

Adaptez à votre projet. N'oubliez pas que le Front Controller est une classe, placez le code dans __construct() )