Bonjour,

Je souhaite pouvoir lancer des actions dans un contrôleur depuis une url de la forme www.monsite.com/index.html?ctrl=user&action=add.

En PHP Je récupérerais les variables ctrl (user) et action (add) pour lancer la fonction « add » du fichier controller « userController ».

Le code en PHP aurait cette forme :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
$ctrl = $_GET['ctrl'];
$action = $_GET['action'];
 
require_once('./controller/' . $ctrl . 'Controller.php');
 
$ctrl = $ctrl . 'Controller';
$controller = new $ctrl($db);
$controller->$action();

J’ai trouvé un moyen de faire la même chose sous Node :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
app.get('/index.html', function(req, res) {
    if (req.query.ctrl && req.query.action){
        let ctrl = req.query.ctrl+"Controller";
        let action = req.query.action;
        eval(ctrl+"."+action+"(res)");
    } else {}
});
Mais ce n'est pas satisfaisant car j'utilise eval()...

J'ai beau chercher je ne trouve pas de solutions. Est-ce tout simplement parce que Node ne s'y prête pas ?

Merci d'avance pour vos lumières