Bonjour,
J'ai suivis le tutoriel de Grafikart sur les routeur (https://www.youtube.com/watch?v=I-DN2C7Gs7A) dans ce tutoriel il utilise une fonction url pour chercher une url grace à son nom exemple si j'ai un lien en get /posts et que je lui dit que ce qui doit faire c'est dans Post#show (Controller PostController, Fonction show) et que je lui dit que son nom c'est homepage j'aurais juste à faire $router->url('homepage'); est j'aurais l'url sauf que moi je souhaiterais y avoir accès dans mes controllers j'ai essayer de faire $router = new Router mais le soucis c'est que sa me met tous à 0 et quand je met la fonction url en static pareil ça mes tous à 0

J'ai mis ça dans mon index.php

$router = new  Zephyr\Router\Router($_GET['url']);
$router->get('/', '#home', 'homepage');

et ça dans mon controller Mon controller est dans le namespace Controller et index.php n'a aucun namespace

        echo \Zephyr\Router\Router::url('homepage');

quand je fait ça j'optiens cette erreur

Fatal error: Uncaught Zephyr\Router\RouterException: No route find in C:\Geek's Studio\Sites\ZephyrWebsite\Router\Router.php:66 Stack trace: #0 C:\Geek's Studio\Sites\ZephyrWebsite\Controllers\Controller.php(10): Zephyr\Router\Router::url('homepage') #1 [internal function]: Zephyr\Controllers\Controller->home() #2 C:\Geek's Studio\Sites\ZephyrWebsite\Router\Route.php(40): call_user_func_array(Array, Array) #3 C:\Geek's Studio\Sites\ZephyrWebsite\Router\Router.php(55): Zephyr\Router\Route->call() #4 C:\Geek's Studio\Sites\ZephyrWebsite\index.php(26): Zephyr\Router\Router->run() #5 {main} thrown in C:\Geek's Studio\Sites\ZephyrWebsite\Router\Router.php on line 66

mais quand je fait le echo $router->url('homepage'); dans le index.php ça fonctionne sans problème
je sais vraiment pas comment faire

Merci pour votre aide

1 réponse


Bonjour,

Il faut certainement faire passer votre routeur à votre controller (via la méthode construct). Je vous recommande d'aller voir le tuto sur les conteneurs de dépendances qui va certainement vous aider :
Si vous utiliser composer : PHP-DI : injection de dépendance
Sinon : Conteneur d'injection de dépendance