Bonjour tout le monde,
Je souhaiterais realiser le dernier TP de la partie "Apprendre PHP" de Grafikart.
J'utilises un macbook avec VS code et MAMP, malheureusement lorsque je follow les videos de ce dernier TP, je ne peux acceder a toutes les routes et ne peux continuer ce TP car je recois une erreur:
Trying to access array offset on value of type bool ou 'URL - The request not found - 404'.
De ce que je comprends l'erreur survient a differents endroits:
Stack Frames(3):
0 = App\Router (index.php): 16
1 = Whoops\Run\handleError(src/Router.php): 33
index.php
->get('/', 'post/index', 'home')
->get('blog/[*:slug]-[i:id]', 'post/show', 'post')
->get('/blog/category', 'category/show', 'category')
16 ->run();
Router.php
public function run():self
{
33 $match = $this->router->match();
$view = $match['target'];
$router = $this->router;
$params = $match['params'];
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . 'layouts/default.php';
return $this;
}
Ce que je veux
Je souhaiterais pouvoir continuer ce TP sans avoir de problemes sous MAMP et/ou sous le development du server grace au terminal VSCode.
Ce que j'ai essayer
J'ai essayer de changer le path de php dans le terminal VSCode pour le php qui est installer dans l'application MAMP pour pouvoir laisser php s'occuper du serveur (car php de VSCode provient de /usr/local/bin...)mais lorsque j'utilise php et le terminal pour creer le server je ne peux acceder a la base de donnees et lorsque j'utilise MAMP pour realiser le TP je recois l'erreur si dessus.
J'ai essayer de faire un simple .htaccess avec "rewriteengine 'on'" et faire la route du router grace a cela mais ca ne marchais pas bien non plus. Ou je ne pouvais me connecter a la db et je pouvais pas acceder a la super variable $_GET.
Merci de votre temps, je peux partager le code si besoin et je me suis aussi inscris sur le discord =).
Bien a vous,
Farlane
Bonjour Farlane,
De ce que j'ai compris, ton erreur est générée par PHP, le problème ne vient donc pas de ton environnement MAMP... est-ce que tu a essayé de deboguer la variable "$match" pour voir si elle contient bien les élements attendus ?
Bonjour Soundboy39,
Merci de ta reponse, malheureusement je ne connais pas le deboguage de $match... J'ai fais une petite google query mais je n'ai pas trouver grand chose jusque maintenant... Pourrais-tu m'eclairer stp?
Bonjour, soit la fonction "var_dump" ou vu que tu utilises "whoops" tu peux faire avec "dd"
Bonjour Carouge10, j'ai fais un test mais la variable est undefined... j'ai aussi essayer un var_dump($match) - var_dump($_MATCH) - var_dump($_match) mais toutes sont undefinies... est-ce une super variable ? comme $_SERVER ou je devrais recupere des infos?
<?php
require '../vendor/autoload.php';
define('DEBUG_TIME', microtime(true));
use App\Router;
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
$router = new Router(dirname(__DIR__) . '/views');
$router
->get('/blog', 'post/index', 'blog')
->get('/blog/[*:slug]-[i:id]','post/show','post')
->get('/blog/category', 'category/show', 'category')
->run();
var_dump($match);
Pardon l'erreur qui survient est trying to access array offset on type of bool.
J'avais mis var_dump plus haut en premiere instance...
Merci
alors toi tu débug une variable avant sa création ?
c'est là où il y a la variable $match qu'il faut débugger
Ouhla, c'est sur ... Desole... J'ai fais un nouvel essaie mais je ne peux acceder a cette page de ce que je comprends puisque mon serveur pointe au dessus de ce dossier mais j'ai require la page pour voir et ca na pas fonctionner...
Merci...
Hello,
Je ne comprend pas trop ce que tu a essayé de faire là...
Bref, normalement, il te sufit de faire ça :
public function run():self
{
$match = $this->router->match();
var_dump($match); die();
...
Si "run()" est bien appelée à chaque fois que tu charge une page du site dans le navigateur, tu devrais avoir l'affichage du debug à tous les coups.
Salut,
Voici mon ma methode run du router . php qui est comme toi mais les resultats ne s'affichent pas a l'ecran aka 'Trying to acces array offset on value of type bool'
public function run():self
{
$match = $this->router->match();
var_dump($match);
$view = $match['target'];
$router = $this->router;
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . 'layouts/default.php';
return $this;
}
Merci,