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 ;)

8 réponses


RedaElkhayat
Réponse acceptée

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');
    }
}

Je peux voir le code complet de la class Request ?

Je suis pas bon en anglais mais c'est marqué "wiew" 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 :)

je serai la :)