Salut à tous !
Je suis un débutant en matière de php, et j'ai vu ces tutos sur la création d'un site dynamique en 7 jours par graphikart !
Je me suis pris au jeu mais dès le 2ième jour, j'ai eu un soucis.
J'ai pourtant suivi le tuto à la lettre (même si je comprend 50% de ce qui est afficher à l'écran (bon okey, 10%)) et j'ai le soucis suivant:
" Warning: require(C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\controller\InFamouS Esport\Controller.php): failed to open stream: No such file or directory in C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\core\Dispatcher.php on line 28
Fatal error: require(): Failed opening required 'C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\controller\InFamouS Esport\Controller.php' (include_path='.;C:\php\pear') in C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\core\Dispatcher.php on line 28"
Voici le code (j'ai eu le problème dès la 30ième minute, mais j'ai quand même persister à l'idée de changer ce petit bout de code, mais malheureusement, non :/))
Code du fichier Dispatcher.php:
"<?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->controllers.'n\'a pas de méthode '.$this->request->action);
}
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).DS.'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}"
Controller.php:
<?php
class Controller{
public $request;
private $vars = array();
public $layout = 'default';
private $rendered = false;
function __construct($request) {
$this->request = $request;
}
public function render($view){
if($this->rendered){
return false;
}
extract($this->vars);
if(strpos($view, '/')===0){
$view = ROOT.DS.'view'.$view.'.php';
}
else{
$view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
}
ob_start();
require($view);
$content_for_layout = ob_get_clean();
require ROOT.DS.'view'.DS.'layout'.DS.$this->layout.'.php';
$this->rendered = true;
}
public function set($key,$value=null){
if(is_array($key)){
$this->vars += $key;
}
else{
$this->vars$key]= $value;
}
}
}
Voilà, j'espère que le problème peu être résolu !
Merci d'avance.
Salut :),
Effectivement ceci est normale, comme tu peut le voir ton url est pas bonne :
C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\controller\InFamouS Esport\Controller.php
C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\ = racine de ton site
controller\ = nom du controller normalement appeler
InFamouS Esport\ = nom du dossier que contient ton site (normalement ceci devrai être l'action appeler)
Controller.php = il manque le nom du controller (exemple: PostController.php) (normalement variables)
<u></u>
<u>url qui devrai normalement être appeler :</u>
C:\Program Files\EasyPHP-12.1\www\InFamouS Esport\ + (nom du controller + 'Controller.php')\ + action \ + variables si il y en a
à mon avis ton problème viens surement de Request donc est-ce que ton request ressemble à ceci :
<?php
class Request{
public $url; // URL appellé par l'utilisateur
public $page = 1; // pour la pagination
public $prefix = false; // Prefixage des urls /prefix/url
public $data = false; // Données envoyé dans le formulaire
function __construct(){
$this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/';
// Si on a une page dans l'url on la rentre dans $this->page
if(isset($_GET'page'])){
if(is_numeric($_GET'page'])){
if($_GET'page'] > 0){
$this->page = round($_GET'page']);
}
}
}
// Si des données ont été postées ont les entre dans data
if(!empty($_POST)){
$this->data = new stdClass();
foreach($_POST as $k=>$v){
$this->data->$k=$v;
}
}
}
}
J'ai eu le même problème et je sais que grâce à ceci $this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/'; que j'ai trouver dans ce topic Texte du lien cela m'avait débloquer ;)
Merci de ton aide.
Malheureusement, je n'ai pas pus résoudre le problème.
Puis je vais d'abord me concentrer à la base de php avant de m'attaquer à cette technique !
(Parce que faire du copie/coller, ne sert strictement à rien quand on ne comprend rien :roll:)
Aller, à la prochaine ;)