Bonsoir je poste a nouveau sur le forum pour un bug qui m'arrive lors de la fonction "loadController()"
J'ai un message d’erreur suivant : "Call to undefined method Dispatcher::loadController() in C:\wamp\www\testasb\core\Dispatcher.php on line 9"

J'ai utilisé les fichiers sources pour essayer de comparer mais je tombe sur le même problème à chaque fois.
Voici le code

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->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 loadController(){
            $name = ucfirst($this->request->controller).'Controller';
            $file = ROOT.DS.'controller'.DS.$name.'.php';
            require $file;
            return new $name($this->request);
        }

?>

Merci d'avance.

5 réponses


djtec
Réponse acceptée

Ton accolade qui est juste avant function loadController devrait être juste avant ?> car la tu ferme la class Dispatcher avant la fonction loadController

zemiki
Auteur

Merci a force de chercher partout, on oublie de voir ce qui est sous son nez, mais ca m'a sortit deux nouveaux message d'erreur maintenant
Warning: require(C:\wamp\www\testasb\controller\controller.php) <a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in C:\wamp\www\testasb\core\Dispatcher.php on line 22

Je pense qu'il s'agit d'une rerreur avec un nom de ficher... je cherche

zemiki
Auteur

Djtec, je te sollicite a nouveau pour ce nouveau problème. J'ai le message d’erreur suivant disant :
" Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'p_controller' does not have a method '' in C:\wamp\www\testasb\core\Dispatcher.php on line 10"

J'ai du mal à comprendre cette erreur, pourrais tu m'éclairer?

p_controller

<?php
class p_controller extends controller{
        function view($nom){
            $this->$vars'phrase'] = 'Bienvenue sur la page '.$nom;
            $this->render('index');
        }

}
?>

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); 
        $controller->render($this->request->action);

        }

        function loadController(){
            $name = ucfirst($this->request->controller).'p_controller';
            $file = ROOT.DS.'control'.DS.$name.'.php';
            require $file;
            return new $name($this->request);
        }
    }

?>

MOI AUSSI J'Ai ce problème aider nous svp..

salut a tous moi j ai un problème sur mon dispatcher qui affiche : Undefined property: Request::$controller in C:\wamp\www\smsnetwork\core\Dispatcher.php on line 14

voici les code :

?php
 class Dispatcher {

    var $request;
    function __construct(){
        $this->request= new Request();
        //echo $this->request->url;
        Router::parse($this->request->url,$this->request);
        $controller = $this->loadController();
        call_user_func_array(array($controller,$this->request->action),array());
    }   
    function loadController(){
        $name = ucfirst($this->request->controller).'Controller';
        $file = ROOT.DS.'controller'.DS.$name.'.php';
        require $file;
        return new $name($this->request);
    }
 }