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

1 réponse


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