Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/10/2011, 17h17   #1
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
Par défaut Problème fonction call_user_func_array()

Bonjour,

Je débute en php 5 est j'ai un petit soucis avec monde code :
Code :
call_user_func_array(array($controlleur, $this->request->action), $this->request->params);
L'erreur :
Citation:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'Pagescontrolleur' does not have a method 'index' in C:\wamp\www\site\Corps\dispatcher.php on line 13
Voici ma Pagecontrolleur :

Code :
1
2
3
4
5
class Pagescontrolleur extends Controlleur{
    function Vue($nom){
       echo 'Vous avez demandé la page !'.$nom;
    }
}
Mais je pense que le probleme vient de ma page Request :
Code :
1
2
3
4
5
6
7
8
9
10
class Request{
public $url; //URL appelé par l'utilisateur
    public $params = "";
 
    function __construct(){
        /* @var $_SERVER <type> */
        $this->url = isset($_SERVER['PATH_INFO'])  ;
       // $this->url = $_SERVER['PATH_INFO'];
    }
}
Car j'ai eu des problèmes avec $_SERVER['PATH_INFO'] qui n'était pas reconnu donc j'ai mi un isset mais je ne pense pas que sa fonctionne correctement.
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h21   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
class 'Pagescontrolleur' does not have a method 'index'
, t'as que une methode Vue, montre la classe du controller
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h25   #3
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
J'ai rien dans ma page controlleur.
le mot index vient de ma page routeur.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
class Routeur{
    //Permet de parser une url @param $url url a parser @return tableau contenant les paramétres
    static function parse($url, $request){
        $url = trim($url, '/');
        $params = explode('/',$url);
        $request ->controlleur = $params[0];
        $request ->action = isset($params[1]) ? $params[1] : 'index';
        $request ->params[]= array_slice($params, 2);
 
        return true;
    }
}
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h28   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
montre ta classe Controlleur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h30   #5
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
Il y a rien
Code :
1
2
3
class Controlleur{
 
}
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h31   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
ajoute une méthode index dans ta classe
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h38   #7
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
Merci de m'avoir mi sur la piste

j'ai changer
Code :
$request ->action = isset($params[1]) ? $params[1] : 'index';
en

Code :
$request ->action = isset($params[1]) ? $params[1] : 'Vue';
Sa a l'air de marché

Merci
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h56   #8
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
En avancant dans mon code je me suis apercu que ce n'etait pas la solution de mettre vue a la place d'index. J'ai donc modifier et j'ai toujours la meme erreur.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
class Controlleur{
    public $request;
    public $vars =array();
    function  __construct($request) {
        $this->request=$request ;
    }
  public function  render($vue){
      extract($this->vars);
      $vue =ROOT.DS.'vue'.DS.$this->request->controlleur.$vue.'.php';
      require($vue);
      die($vue);
  }
}
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h58   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
rajoute la méthode, si tu la met pas c'est normale de d'avoir une erreur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 18h04   #10
Membre régulier
 
Inscription : janvier 2011
Messages : 283
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 283
Points : 96
Points : 96
J'ai rajouté une method index dans controlleur le probleme c'est que sa m'affiche pas ce qui est attendu pour moi je pense que sa viens que je ne récupère rien dans $url
Code :
$this->url = isset($_SERVER['PATH_INFO'])  ;
xouzi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 18h16   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
fait une redirection vers Vue alors, si tu met rien dans ton index c'est normale qu'il n'affiche rien
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h07.


 
 
 
 
Partenaires

Hébergement Web