Bonjour,
Voila je rencontre un petit problème avec mon code.
ça c'est la classe :
<?php
namespace App;
class Router{
/**
* @var string
*/
private $viewPath;
/**
*@var AltoRouter
*/
private $router;
public function __construct(string $viewPath){
$this->viewPath = $viewPath;
$this->router = new \AltoRouter();
}
public function get(string $url, string $view , ?string $name = null) :self{
$this->router->map('GET', $url , $view, $name);
return $this;
}
public function run() :self {
$match = $this->router->match();
dump($match);
$view = $match['target'];
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . 'layouts/default.php';
return $this;
}
}
Ce code est mon index.php :
<?php
require '../vendor/autoload.php';
try{
$router = new App\Router(dirname(DIR) . DIRECTORY_SEPARATOR . "views");
$router->get('/blog', 'post/index', 'blog');
$router->get('/blog/category', 'category/show', 'category');
$router->run();
}catch(Exception $e)
{
echo 'Erreur : ' . $e->getMessage();
}
?>
je veux obtenir la bonne url pour mon site , que le chemin fonctionne convenablement
J'ai cette erreur qui me pose un problème depuis pas mal de temps :
-Fatal error: require(): Failed opening required 'C:\wamp64\www\mon_site\views.php' (include_path='.;C:\php\pear') in C:\wamp64\www\mon_site\src\Router.php on line 33
j'ai vue que le problème est que ma variable $view dans mon routeur ne contient pas la clausure donc $vienw ne contient pas le tableau avec les information de l'url pour aller sur la bonne page apres le \views\"ici devrais y avoir la suite du chemin".php
Bonjour,
Je pense que ton erreur vient peut etre de :
$router = new App\Router(dirname(DIR) . DIRECTORY_SEPARATOR . "views");
Testes en remplaçant par :
$router = new App\Router(dirname(__DIR__) . DIRECTORY_SEPARATOR . "views");
la doc sur les constantes "magiques" : lien vers php.net