Bonjour,
Pouvez vous montrer le contenu de Router.php ?
Bonjour,
En suivant à la lettre et pas à pas le tuto n°2 pour développer une architecture en PHP, arrivé au terme de la vidéo je rencontre deux messages d'erreurs :
[http://hpics.li/920dd01]
Dans le doute si le lien vers l'image ne fonctionne pas :
1) Warning: require(E:\wamp64\www\projet-SCAL\controller\ViewController.php): failed to open stream: No such file or directory in E:\wamp64\www\projet-SCAL\core\Dispatcher.php on line 30
2) Fatal error: require(): Failed opening required 'E:\wamp64\www\projet-SCAL\controller\ViewController.php' (include_path='.;C:\php\pear') in E:\wamp64\www\projet-SCAL\core\Dispatcher.php on line 30
J'ai pourtant (sauf erreurs bien sûr) veillé à la lettre les notations des fichiers et répertoires. Structrure :
!([http://hpics.li/37fc95c])
Ce qui me gène dans ces messages d'erreur sont les chemins, le problème devant venir de la gestion de l'url ?aroundEn tout cas comment arriver à atteindre enfin ma page index.php (en sachant que suivant l'url j'arrive à afficher la page 404.php).
Enfin dans mon Dispatcher.php le code est :
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
if(!in_array($this->request->action,get_class_methods($controller))){
$this->error('Le controller '.$this->request->controller.' n\'a pas de méthode '.$this->request->action);
}else{
call_user_func_array(array($controller,$this->request->action),$this->request->params);
$controller->render($this->request->action);
}
}
function error($message){
header("HTTP/1.0 404 Not Found");
$controller = new Controller($this->request);
$controller->set('message',$message);
$controller->render('/errors/404');
die();
}
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
class Request{
public $url;
function __construct(){
$this->url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO']:'/';
}
}
6 réponses
Merci pour votre intervention AlexJM,
Router.php :
Pas de problème
Quelle est l'url que vous consultez ?
Bonsoir.
D'après l'erreur, le fichier demandé serait ViewController.php, sauf que je ne pense pas que ce soit ce que tu souhaites et étant donné que tu ne dois pas avoir un fichier qui se nomme comme ceci (selon la structure des fichiers que tu nous montre), essaies de voir d'où ça doit venir.
Quel est l'adresse que tu appelles ?
Bon.. encore une fois merci car en fin de compte vous avez relevé le problème : l'url...
Pourtant Je l'ai modifié très régulièrement et en retrouvant les mêmes erreurs : http://localhost/projet/
puis http://localhost/projet/pages/view/
Eh bien je ne sais que dire... car reprennant http://localhost/projet/pages/
Finalement la page index fini par s'afficher.. !! Conclusion... le code ok, juste l'url posait soucis...
(du coup j'ai ré-édité le post en résolu ^^)
Clique sur le bouton résolu (je sais plus exactement le nom) comme ça le système saura qu'il est résolu ;)