Altorouter comment avoir accès au noms des routes dans les vues ?

Par Abdellah63, il y a 5 ans


Bonjour,

Je débute en php et j'utilise Altorouter dans mon projet, j'aimerai avoir accès à l'instance $router dans mes vues pour pouvoir utiliser les noms de route en faisant appel à $router-> generate() dans la vue mais la variable $router n'est pas définie dans mes vues ? la structure de mon projet est comme ceci:

Index.php

$router = new AltoRouter(); $router->map( 'GET', '/post/[:id]/', 'PostController#find' ); $match = $router->match(); if ($match === false) { throw new \Exception($error->404()); } else { list($controller, $action) = explode('#', $match['target']); if (is_callable(array($controller, $action))) { $obj = new $controller(); call_user_func_array(array($obj, $action), array($match['params'])); } else { throw new \Exception($error->500()); } }

PostController.php

public function find($args) { $post = $this->PostModal->find($args[id]); // View View::render('post/show', compact('post')); }

Ma classe View.php qui gère les vues

public static function render(string $path, array $variables = []) { extract($variables); ob_start(); require 'views/' . $path . '.html.php'; $pageContent = ob_get_clean(); require 'views/layouts/layout.html.php'; }

2 réponses

Carouge10, il y a 5 ans

Bonsoir,
Ajouter "global $router;" dans le render.

Abdellah63, il y a 5 ans

salut,

lolo3129 Ca ma l'aire d'être une solution mais j'avoue que je m'arrache les cheveux à réfléchir sur comment m'y prendre.
Carouge10 d'après certains il faut éviter d'utiliser global surtout en programmation objet !