Bonjour,

je retente ma chance aupres de vous pour essayer de comprendre mon erreur.
J'essaye depuis un petit bout de reussir le tp grafikart 'creation du blog' avec altorouter.
Lorsque je commence a suivre la partie structuration, le serveur est lancer via l'editeur (dans mon cas et celui de la video: VS Code) mais malheureusement je n'ai pas access a une base de donnees via PHP de l'editeur VS CODE terminal.

Donc, j'ai essayer d'utiliser MAMP a la place mais lorsque je pointe le serveur sur le dossier public je n'arrive pas a faire marcher le router. Voici le code ci-dessous. Merci,

<?php 

require '../vendor/autoload.php';

$router = new AltoRouter();

define('VIEW_PATH', dirname(__DIR__) . '/views');

$router->map('GET', '/blog', function(){
    require VIEW_PATH . '/post/index.php';
});

$router->map('GET', '/blog', function(){
    require VIEW_PATH . '/category/show.php';
});

$match = $router->match();
$match['target']();

Le document root de mamp:

Users>prgrmng>Desktop>MAMP>public

Ce que j'obtiens

Lorsque l'url de mon navigateur est sur:
" localhost:8888 "

J'obtiens cette erreur:
Warning: Trying to access array offset on value of type bool in /Users/prgrmng/Desktop/MAMP/public/index.php on line 19

Fatal error: Uncaught Error: Value of type null is not callable in /Users/prgrmng/Desktop/MAMP/public/index.php:19 Stack trace: #0 {main} thrown in /Users/prgrmng/Desktop/MAMP/public/index.php on line 19
PS: la ligne 19 correspond a:

$match['target']();

Lorsque j'ajoute /blog a mon url (ce qui correspond a: localhost:8888/blog), j'obtiens:
Not Found
The requested URL was not found on this server.

Je pense bien entendu qu'il faut faire un url rewriting mais lorsque je fais ca je ne peux plus suivre le cours apres quelque chapitres car il faut acceder a d'autre pages tel que adminer.php etc...et lorsque je commence un serveur directement de mon editeur(vs code) le php qui lance le serveur est pas le meme php que celui de MAMP donc je n'ai pas acces a la base de donnees.

J'ai poster sur openclassrooms avec un screenshot de vscode - mamp et mon navigateur qui peut etre plus parlant:
https://openclassrooms.com/forum/sujet/altorouter

Encore merci,

4 réponses


Bonsoir.
Si tu définies 2 mêmes url pour une même méthode, c'est plutôt normal que tu aies un problème.
Tu définies 2 fois /blog pour la méthode GET avec le routeur,, par conséquent.
Et puis pour avoir un code un minimum fonctionnel, tu devrais d'abord vérifier si le routeur matche bien la requête avant de faire une quelconque autre action.

Fulex
Auteur

Bonjour Lartak,

Merci, en effet les routes etaient les memes mais cela ne change rien apres avoir changer la deuxieme route pour /blog/category.

Comment puis-je savoir si le router match bien? J'ai fais des var_dump de $_GET et de match mais j'obtiens toujours un bool(false) pour match...

Tu as regardé la documentation officielle ?

Il y a un exemple de comment utiliser cette classe : https://altorouter.com/usage/processing-requests.html ! Ils expliquent comment utiliser aussi $router->match();

Tiens nous au courant.

A+

Fulex
Auteur

Merci je vais regarder plus en profondeur et continuer a essayer. Merci