Bonjour à tous
Je suis en train de creer un site de depot d'annonces immobiliere en php objet mvc .
J'ai un soucis au niveau du form login quand je le submit.
Voici l'erreur afficher sur mon navigateur :
Attention : Clé de tableau non définie "POST" dans C:\xampp\htdocs\immo\routes\Router.php à la ligne 24
Attention : l'argument foreach() doit être de type array|object, null donné dans C:\xampp\htdocs\ immo\routes\Router.php à la ligne 24
La function ou le probléme viens ( fichier Router.php )
public function run(){
foreach ($this->routes[$_SERVER['REQUEST_METHOD']] as $route){ /// Ligne 24
if ($route->matches($this->url)){
$route->execute();
}
}
return header('HTTP/1.0 404 Not Found');
}
Mon form login dans le fichier views/Auth/login.php
<h1>Login</h1>
<?php if(isset($errorMessage)) { ?>
<div><?php echo $errorMessage; ?></div>
<?php } ?>
<form method="post" action="">
<label>Username:</label>
<input type="text" name="username" required><br><br>
<label>Password:</label>
<input type="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
J'ai essaye de modifier la function run comme ceci mais toujours le soucis..
public function run(){
if (isset($this->routes['POST'])) {
foreach ($this->routes['POST'] as $route) {
if ($route->matches($this->url)){
$route->execute();
return;
}
}
}
foreach ($this->routes[$_SERVER['REQUEST_METHOD']] as $route) {
if ($route->matches($this->url)){
$route->execute();
return;
}
}
return header('HTTP/1.0 404 Not Found');
}
Hello,
Est-ce que tu as affiché le contenu de ta propriété routes
avec un var_dump
avant la ligne de l'erreur ?
var_dump($this->routes);
Que vaut $_SERVER['REQUEST_METHOD']
?
Déjà regarde ça et ensuite la solution serait de tester en effet que ça existe ou non et en fonction faire l'action voulu. Exemple :
public function run(): void
{
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; // je te laisse regarder la doc de "??"
$routes = $this->routes[$method] ?? [];
foreach($routes as $route) {
if ($route->matches($this->url)) {
$route->execute();
return;
}
}
header('HTTP/1.0 404 Not Found', true, 404);
return;
}
Mais cela m'étonne qu'une erreur simple de type case X dans le tableau Y inconnue
ne te sois pas familier et donc que tu n'arrive pas à comprendre. Es-tu sûre que tu as les bases requises pour faire ce code ? Ou est-ce que tu suis une vidéo comme ça sans comprendre ?
Salut, c'est bon j'ai trouvé !
En fait, j'ai regardé des vidéos, mais maintenant je pratique sans les vidéos. Je comprends beaucoup mieux quand je fais comme ça. Je fait un projet sans regarder de video