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';
}
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 !