Bonjour
J'ai éditer mon post car l'erreur ne vient plus de l'array, en fait lorsque je fait : ( 47min de la vidéo).
http://localhost/BLOG\_V2/pages/lol

j'ai quand même :

Bienvenue
C'est la page d'accueil

J'ai regarder une seconde fois la vidéo en comparant les codes et je n'ai pas remarquer mon erreur...

La page Dispatcher :

<?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 error($message){
        header("HTTP/1.0 404 Not Found");
        $controller = new Controller($this->request);
        $controller->set('message',$message);
        $controller->render('/errors/404.php');
        die();
    }
    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 pour vos réponse

10 réponses


Moi je suis a la 4 donc c'est possible que j'ai des truc que tu n'a pas mes je te donne les différence trouver et tu les aisés pour me dire quoi :

Ligne 10: if(!in_array($this->request->action , array_diff(get_class_methods($controller),get_class_methods('Controller'))) ){

De la ligne 18 a 24 : function error($message){
$controller = new Controller($this->request);
$controller->e404($message);
}
Voila maintenant a toi de tester je ne sais pas ou ca flanche je vient de commencer le php => Test ca est dit moi quoi :)

Dylan.

Yoan
Auteur

Puisque le code à l'air d'évoluer au prochaine vidéo, je vais donc continuer jusqu'à la fin et je reviendrais aux nouvelles ici. En attendant si quelqu'un à quand meme la solution sa pourrait me servir :)
Merci dalisyo5612 ;)

Oui mais ci tu as une erreur ne continue pas parce que par après tu va êtres bloqué et tu va te dire "zut c'est a cause de l'erreur d'avant" O pire ci tu es premium cava parce que tu peut télécharger le fichier qui plante ;)

Yoan
Auteur

Après avoir fait la journée 3 du développement j'ai pu résoudre l'ancienne erreur mais des nouvelles se sont infligé oO
C'est bête quand même, il suffit de regarder et d'écrire ce qu'il dit et à chaque fois j'ai pas la même choses affiché que lui ^^

ma première erreur principale c'est que j'ai toujours ceci :

Page introuvable

Le controller pages n'a pas de méthode index

Quelque soit l'url..
http://localhost/BLOG\_V2/pages/view/1
http://localhost/BLOG\_V2/pages/view/toto
http://localhost/BLOG\_V2/pages/view/'"'

J'ai chercher et je n'ai pas trouver l'erreur...

Ensuite, la seconde c'est à la fin pour le foreach :

Notice: Undefined variable: pages in D:\PROGRAMMATION\wamp\www\BLOG_V2\view\layout\default.php on line 15
Warning: Invalid argument supplied for foreach() in D:\PROGRAMMATION\wamp\www\BLOG_V2\view\layout\default.php on line 15

Pourtant j'ai fait pareil :S

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lag="fr">
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
        <title><?php echo isset($title_for_layout)?$title_for_layout:'Mon site'; ?></title>
        <link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" />
    </head>
    <body>
        <div class="topbar">
          <div class="topbar-inner">
            <div class="container">
              <h3><a href="#">Mon site</a></h3>
                <ul class="nav">
                  <?php foreach($pages as $p): ?>
                  <li><a href="<?php echo BASE_URL.'/pages/view'.$p->id; ?>" 
                         title="<?php echo $p->name; ?>"><?php echo $p->name; ?></a></li>
                  <?php endforeach; ?>
                </ul>
            </div>
          </div>
        </div>
        <div class="container" style="padding-top:60px;">
            <?php echo $content_for_layout; ?>
        </div>
    </body>
    <script type="text/javascript" src="https:/ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</html>

Merci à ceux qui pourrons m'aider a résoudre ce problème ;)

Cette page n'a pas d'erreur j'ai exactement la mêmes que la tienne

Yoan
Auteur

Je croit que je vais laisser tomber car j'enchaine les erreurs, à ce rythme j'ai pas fini de relire les vidéo x)

Mdr' mais tien le coup moi j ai penser ça aussi au début a la 2 mais regarder ou j'en suis :) (a la 5)

Yoan
Auteur

J'ai fini mais niveau admin y'a quand même quelques erreurs à la création/édition d'article mais aussi sur la page pour les médias.
./cockpit/medias/index
Alors j'essaye de corriger, mais si c'est déjà arriver à quelqu'un... ;)

cockpit/post/edit

Notice: Array to string conversion in D:\PROGRAMMATION\wamp\www\BLOG_V2\core\Form.php on line 31

cockpit/medias/index

Warning: Missing argument 1 for MediasController::admin_index() in D:\PROGRAMMATION\wamp\www\BLOG_V2\controller\MediasController.php on line 4
Notice: Undefined variable: id in D:\PROGRAMMATION\wamp\www\BLOG_V2\controller\MediasController.php on line 25
Notice: Undefined variable: id in D:\PROGRAMMATION\wamp\www\BLOG_V2\controller\MediasController.php on line 26

J'ai éditer le titre du sujet afin de correspondre à ce post et non au premier problème.

Salut Yoan,

Serait-il possible que tu m'éclaires sur les problèmes que tu avais avec le DISPATCHER.PHP et autre ...

J'ai exactement les mêmes erreurs mais je ne parviens pas à trouver de solution ...

Si tu veux je t'envoie tout mes codes ...

D'avance merci.

j'ai créer un post concernant le dispatcher.php et le test de la class __construct avec le echo 'lol;
Si quelqu'un peut y jetter un oeil car je suis vraiment en galère :/

Merci beaucoup, désolé pour ma réponse qui n'aide personne ici...