
{"language":"application/x-httpd-php","content":"<?php\n\tclass UserController extends BaseController\n\t{\n\t\tpublic function Login()\n\t\t{\n\t\t\t$this->View(\"login\");\n\t\t}\n\t\t\n\t\tpublic function Authenticate($login,$password)\n\t\t{\n\t\t\t\n\t\t}\n\t}","filename":"UserController.php"}

{"language":"application/x-httpd-php","content":"<form class=\"login-form\" action=\"Login\" method=\"post\"> \n\t<label>Identifiant</label>\n\t<input type=\"text\" name=\"login\" />\n\t<label>Mot de passe</label>\n\t<input type=\"password\" name=\"password\" />\n\t<input type=\"submit\" value=\"Se connecter\" />\n</form>","filename":"login.php"}

Ajoute un var_dump($login,$password) dans ton action authenticate, et ouvre ton formulaire sur un navigateur, renseigne les champs et poste le.
{"language":"application/x-httpd-php","content":"<?php\n\tclass UserController extends BaseController\n\t{\n\t\tpublic function Login()\n\t\t{\n\t\t\t$this->View(\"login\");\n\t\t}\n\t\t\n\t\tpublic function Authenticate($login,$password)\n\t\t{\n\t\t\tvar_dump($login,$password);\n\t\t}\n\t}","filename":"UserController.php"}


Et oui, on a oublié un détail, on a prévu une méthode bindParam dans HttpRequest, mais on ne l'a appelé nul part... Il faudrait l'appeler pour ajouter ces paramètres. Saurais tu me dire où ce serait le plus pertinent?

Effectivement, on pourrait le faire dans l'index, mais je te propose plutôt de le mettre dans la méthode run de HttpRequest juste avant de faire le run de la route. Ce sera idéal à cet endroit là.
Ok je fais ça.
{"language":"application/x-httpd-php","content":"<?php\n\tclass HttpRequest\n\t{\n\t\tprivate $_url;\n\t\tprivate $_method;\n\t\tprivate $_param;\n\t\tprivate $_route;\n\t\t\n\t\tpublic function __construct($url = null, $method = null)\n\t\t{\n\t\t\t$this->_url = (is_null($url))?$_SERVER['REQUEST_URI']:$url;\n\t\t\t$this->_method = (is_null($method))?$_SERVER['REQUEST_METHOD']:$method;\n $this->_param = array();\n\t\t}\n\t\t\n\t\tpublic function getUrl()\n\t\t{\n\t\t\treturn $this->_url;\t\n\t\t}\n\t\t\n\t\tpublic function getMethod()\n\t\t{\n\t\t\treturn $this->_method;\t\n\t\t}\n\t\t\n\t\tpublic function getParams()\n\t\t{\n\t\t\treturn $this->_params;\t\n\t\t}\n\t\t\n\t\tpublic function setRoute($route)\n\t\t{\n\t\t\t$this->_route = $route;\t\n\t\t}\n\t\t\n\t\tpublic function bindParam()\n\t\t{\n\t\t\tswitch($this->_method)\n\t\t\t{\n\t\t\t\tcase \"GET\":\n\t\t\t\tcase \"DELETE\":\n\t\t\t\t\tforeach($this->_route->getParam() as $param)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(isset($_GET[$param]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$this->_param[] = $_GET[$param];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase \"POST\":\n case \"PUT\":\n\t\t\t\t\tforeach($this->_route->getParam() as $param)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(isset($_POST[$param]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$this->_param[] = $_POST[$param];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t}\n }\n\n public function getRoute()\n {\n return $this->_route;\n }\n \n public function getParam()\n\t\t{\n\t\t\treturn $this->_param;\t\n }\n \n\t\tpublic function run($config)\n {\n $this->bindParam();\n $this->_route->run($this,$config);\n }\n\n public function addParam($value)\n {\n $this->_param[] = $value;\n }\n\t}","filename":"HttpRequest.php"}
Recharge ta page dans ton navigateur maintenant.


Et oui, on l'avais prévu dans le framework pour qu'il nous gère ça tout seul, donc ça fonctionne tout seul.Il ne te reste plus qu'à appeler le manager, qui est une des propriétés de ton contrôleur, et sa méthode getByMail pour vérifier si le login existe en base de données. Tu place le résultat dans une variable $user et tu change le var_dump pour afficher cette variable.
{"language":"application/x-httpd-php","content":"<?php\n\tclass UserController extends BaseController\n\t{\n\t\tpublic function Login()\n\t\t{\n\t\t\t$this->view(\"login\");\n\t\t}\n\t\t\n\t\tpublic function Authenticate($login,$password)\n\t\t{\n\t\t\t$user = $this->UserManager->getByMail($login);\n\t\t\tvar_dump($user);\n\t\t}\n\t}","filename":"UserController.php"}

Tu as vérifié les dossiers configurés pour l'autoload?

{"language":"application/json","content":"{\n\t\"autoloadFolder\": [\n\t\t\"Framework\",\n\t\t\"Controller\",\n\t\t\"Model\",\n\t\t\"Framework/Exception\",\n\t\t\"Model/Manager\",\n\t\t\"Model/Entite\"\n\t],\n\t\"database\": {\n \"name\": \"Ma base de données\",\n \"dbname\": \"database\",\n \"host\": \"localhost\",\n \"user\": \"user\",\n \"password\": \"pwd\"\n\t},\n\t\"basepath\" : \"/mvc-php\"\n}","filename":"config.json"}

Et bien cette fois repasse par ton formulaire, mais entre un mail qui est présent dans la base de données.
Pensez à ajouter au moins une ligne dans la table user de votre base de données, sinon vous aurez toujours un résultat de requête vide.

Voilà, il ne reste qu'une chose à faire dans le contrôleur, si tu récupère un User et que le mot de passe est le bon, tu peux afficher une vue pour précisé qu'il est bien connecté, sinon une vue d'erreur. Mais il n'y a plus rien de sorcier dans tout ça pour toi normalement, maintenant c'est à toi de jouer, créer tes contrôleurs, action, modèles et vue pour ton application. Nous avons terminé !

Avec plaisir Arthur. J'ai terminé cette partie