Bonjour,
Je suis au jour 2 de Concevoir un site de A a Z en PhP
a 30 minutes, j'ai cette erreur
Mon Dispatcher:
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
call_user_func_array(array($controller,$this->request->action),$this->request->params);
}
function loadController(){
$name = ucfirst($this->request->controller). 'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
?>
PagesController:
<?php
class PagesController extends Controller{
function view($nom){
echo 'Vous avez demande la page : ' .$nom;
}
}
?>
si vous avez besoin d'autre codes, y a qu'a demande ;)
voila une solution pour éviter ce problème.
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
if(is_array($this->request->actio, get_class_methods($controller)){
call_user_func_array(array($controller,$this->request->action),$this->request->params);
}else{
die('L\'action n’existe pas');
}
}
Merci luffysan :) t'as tou dis :p
vérifies l'url et remplacer la 'wiew' par 'view', une faute de frappe.
J'au cherché un wiew... mais sublime ne dit qu'il n'y en a pas dans une autre class
j'ai testé en renomant view par wiew. sa marche mais je sais pas si y a une appelation de "wiew" incorect
ou si je dois réellement renomée "view" par "wiew"
Tenez, voila Request.php (souviens toi Reda, tu m'avait filé le code parce que PATH_INFO marche pas :p )
<?php
class Request{
public $url; // URL appellé par l'utilisateur
function __construct(){
$this->url = (isset($_SERVER'PATH_INFO'])) ? $_SERVER'PATH_INFO'] : '/';
}
}
?>
En attendant, je continue avec la fonction renommé en "wiew" pour continuer le tuto
Il faut que tu mettre 'view' par ce que dans ta class PagesController il y a une method qui a le nom 'view'.
lui il essaie de chercher la method préciser dans l'url et s'il ne la trouvera pas il affiche l'erreur.
Merci Reda, je te contactere sur ce post a l'avenir en cas de problème, viens le voir de temps en temps :)