Bonjour à tous !
Alors voila je suis en train de suivre l'excellent tuto "Créer son site en PHP" j'en suis au jour 2 et j'ai un gros problème.
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request(); //Initialise la variable
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
$controller ->view();
}
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
Le problème est que rien ne s'affiche et je suis pratiquement sur que le problème vient de Dispatcher{
En effet, il fallait mettre $Dispatcher = new Dispatcher();. Cependant en rajoutant ces deux fonctions (__Construct et loadController) je ne peux garder $Dispatcher = new Dispatcher();
Quelqu'un aurait trouvé une solution ?
Bien cordialement,
Bien sur :
index.php
<?php
define('WEBROOT', dirname(__FILE__));
define('ROOT',dirname(WEBROOT));
define('DS', DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define ('BASE_URL', dirname(dirname($_SERVER['SCRIPT_NAME']))); //Remonter d'un cran dans l'url
require CORE.DS.'includes.php';
?>
includes.php
<?php
require 'Request.php';
require 'Router.php';
require 'Dispatcher.php';
require 'Controller.php';
Parfait quand je tappe ton URL ça marche !
Merci beaucoup !!!!
En fait rien ne s'affiche c'est bien ça le problème. J'ai aucun message d'erreur
Oui j'avais bien écrit ça mais en copiant, collant ça a enlevé les underscores.
Le new Dispatcher() je le met en dessous de cette ligne ?
Merci :D
define('WEBROOT', dirname(FILE));
define('ROOT',dirname(WEBROOT));
define('DS', DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define ('BASE_URL', dirname(dirname($_SERVER['SCRIPT_NAME']))); //Remonter d'un cran dans l'url
require CORE.DS.'includes.php';
new Dispatcher();
Le problème c'est que ça me lance deux erreurs :
require(C:\wamp\www\CMS\controller\ViewController.php): failed to open stream: No such file or directory in C:\wamp\www\CMS\core\Dispatcher.php on line 17
require(): Failed opening required 'C:\wamp\www\CMS\controller\ViewController.php' (include_path='.;C:\php\pear') in C:\wamp\www\CMS\core\Dispatcher.php on line 17
La première erreur je pense comprendre la seconde pas du tout
J'ai modifié mais ça ne vient pas de ça.
require(C:\wamp\www\CMS\controller\ViewController.php): or, je n'ai pas de fichier ViewController.php
<?php
class Request{
public $url; //URL appelé par l'utilisateur.
function __construct(){
$this->url = $_SERVER['PATH_INFO'];
}
}
J'ai inscrit l'URL :
http://localhost/CMS/view/index
Je pense que cela doit venir de la fonction parse du fichier Router.php
Car pour voir une page,l'url est du style localhost/CMS/pages/view/1