slt
voici les erreurs quej'ai après avoir fini le jour 2 de la structure PHP
aider svp car j'ai bien envie de finir les 7 jours merci
Notice: Undefined index: PATH_INFO in C:\HTTSERV\www\tuto\site\core\request.php on line 8
Warning: require(C:\HTTSERV\www\tuto\site\controller\Controller.php) [function.require]: failed to open stream: No such file or directory in C:\HTTSERV\www\tuto\site\core\dispatcher.php on line 35
Fatal error: require() [function.require]: Failed opening required 'C:\HTTSERV\www\tuto\site\controller\Controller.php' (include_path='.;C:\php5\pear') in C:\HTTSERV\www\tuto\site\core\dispatcher.php on line 35
svp cela maintenant plusieur semaine que je n'est pas eu de suite a ma requette aider moi svp
merci
Tu as un problème au niveau de l'inclusion de ton fichier "controller.php". Pourrais-tu envoyer le fichier "dispatcher.php" Merci.
slt voici mon dispatcher
<?php
class Dispatcher
{
var $request ;
function __construct()
{
$this -> request = new Request();
Router :: parse($this->request->url,$this -> request);
//$this->request->url ; echo $this->request->url je doit chercher a comprendre pourquoi je ne vois pas le chemin initial de de l'url a travers path_info
//print_r(get_class_methods($controller)); die();
$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);
}
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;
//$controller = new $name($this ->request);
return new $name($this ->request);
}
}
?>
J'avais déjà refait le tutoriel donc normalement mes sources sont bonnes, tu as vraisemblablement un problème dans le request.php ce qui implique une erreur dans le reste.
<u>Request.php</u>
<?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;
}
}
}
}
<u>Dispatcher.php</u>
<?php
/**
* Dispatcher
* Permet de charger le controller en fonction de la requête utilisateur
**/
class Dispatcher{
var $request; // Object Reques
/**
* Fonction principale du dispatcher
* Charge le controller en fonction du routing
**/
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
$action = $this->request->action;
if($this->request->prefix){
$action = $this->request->prefix.'_'.$action;
}
if(!in_array($action , array_diff(get_class_methods($controller),get_class_methods('Controller'))) ){
$this->error('Le controller '.$this->request->controller.' n\'a pas de méthode '.$action);
}
call_user_func_array(array($controller,$action),$this->request->params);
$controller->render($action);
}
/**
* Permet de générer une page d'erreur en cas de problème au niveau du routing (page inexistante)
**/
function error($message){
$controller = new Controller($this->request);
$controller->e404($message);
}
/**
* Permet de charger le controller en fonction de la requête utilisateur
**/
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
if(!file_exists($file)){
$this->error('Le controller '.$this->request->controller.' n\'existe pas');
}
require $file;
$controller = new $name($this->request);
return $controller;
}
}
Si tu en es au jour 2 et que, lorsque tu es sur la page "d'accueil" de ton site tu as cette erreur : c'est normal !! tu redirigeras ta page d'index lors du tuto sur les router.
En gros, pour l'instant, laisse ta page comme ça et dans ta barre d'adresse, met bien le nom de ton controller et de ta vue. Tout reviendra et tu pourras continuer les tutos.
Il n'y a pas d'erreur dans le request, juste qu'a la racine de son site, le 'PATH_CONTROLLER' n'existe pas. La requete ne peut pas se faire sur un controller "vide".
En espérant avoir aidé
Ybi
edit : Nonathy, tes sources fonctionnent effectivement une fois que tu en es au bon tuto. Je vois qu'il y a la variable $prefix dans ton request.php. Hors ça n'apparait qu'au tuto 5. kantykr aurra, je pense, plus de problème si il utilise ton code vu qu'il n'en est qu'au tuto 2
Regarde la suite des tutoriels, si jamais à la fin de la série tu as des erreurs, vient nous en parler, on t'aidera :)
slt
pour pourvoir mieux continuer j'ai repris le tuto 2
mais avent mem de rentrer dans le vif du sujet voici l'erreur que je croise avec le .htaccess
après ajout de celui-ci dans le webroot
merci pour votre aide
car jai bien envie de mieu comrendre ce procesus until la fin merci
Erreur du serveur!
Le serveur a èté victime d'une erreur interne et n'a pas été capable de faire aboutir votre requête. Soit le server est surchargé soit il s'agit d'une erreur dans le script CGI.
Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
Error 500
j'ai trouve la solution pour cette question c'etait une erreur de ma part d'ecriture merci
je continue et je vous ferai signe pour la suite
merci
slt une precision pour faire le tu to 1 sans faute jai pris la version easyphp 5.3.5
merci pour votre aide je continue now
avant d'utiliser easyphp, quel serveur local utilisais-tu ?
Si c'est un pb avec le .htaccess, peut etre que le module apache 'rewrite_module' n'était pas chargé. J'avais une erreur a cause de ca et elle ressemble à la tienne (j'utilise WAMP server)
pour le coup, je pourrais pas te dire si mon idée était juste... mais bon. J'espere que tu t'en sors. Sinon, n'hésite pas
Moi aussi j'ai un problème similaire
voici ce qui s'affiche
Warning: require(C:\xampp\htdocs\dashboard\SiteWeb\controller\PagesController.php): failed to open stream: No such file or directory in C:\xampp\htdocs\dashboard\SiteWeb\core\Dispatcher.php on line 20
Fatal error: require(): Failed opening required 'C:\xampp\htdocs\dashboard\SiteWeb\controller\PagesController.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\dashboard\SiteWeb\core\Dispatcher.php on line 20
au niveau du fichier, il ajouter Dashboard avant le nom du fichier. Je ne comprends plus rien