Bonjour à tout, je suis entrain d’essayer de développer mon site (Développer un site : Jour 3, les models) quand j'arrive au moment ou je doit créer la page d'erreur e404, j'ai tout suivi à la lettre. Une fois fini je regarde le résultat sur le localhost et sa me met l'erreur suivante : http://imageshack.us/photo/my-images/833/e404erreur.jpg/ mon fichier PagesController.php est dans le screen aussi. Merci

7 réponses


erfou
Réponse acceptée

Salut,
la fonction e404 n'est pas définie car il manque une accolade } pour terminer la fonction loadmodel ligne42; du coup e404 est 'incluse' dans loadmodel.

le lien http://localhost/site/pages/view provoque une erreur car la fonction view attend un parametre $id.
pour contourner, soit tu declare la fonction comme ca : function view($id=1) par défaut ca affichera la page 1;
soit tu declares function view($id=null){ dans ce cas, tu testes au debut la valeur de $id ; si ca vaut null, tu declenches un $this->e404('page introuvable')

eric

guifloco
Auteur

Personne ne peux m'aider ?

Tu as crée la fonction e404 ?

guifloco
Auteur

oui (Controller.php) :

<?php 
    class Controller{
        public $request;
        private $vars = array();
        public $layout = 'default';
        private $rendered = false;
        function __construct($request){
            $this->request = $request;
        }
        public function render($view){
            if($this->rendered){ return false;}
            extract($this->vars);
            if(strpos($view,'/')===0){
                $view = ROOT.DS.'view'.$view.'.php';
            }else{
                $view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
            }
            ob_start();
            require($view);
            $content_for_layout = ob_get_clean();
            require ROOT.DS.'view'.DS.'layout'.DS.$this->layout.'.php';
            $this->rendered = true;
        }
        public function set($key,$value=null){
            if(is_array($key)){
                $this->vars = $keys;
            }else{
                $this->vars$key] = $value;
            }
        }
        function loadModel($name){
            $file = ROOT.DS.'model'.DS.$name.'.php';
            require_once($file);
            if(!isset($this->$name)){
                $this->$name = new $name();
            }
        function e404($message){
            header("HTTP/1.0 404 Not Found");
            $this->set('message',$message);
            $this->render('/errors/404');
            die();
        }

        }
    }
?>
guifloco
Auteur

Je viens de me rendre compte quand je vais sur le lien suivant http://localhost/site/pages/view sa me met cette erreur : http://imageshack.us/photo/my-images/824/erreurpagescontroller.jpg/ . Mon code PagesController.php :

<?php 
    class PagesController extends Controller{
        function view($id){
            $this->loadModel('Post');
            $post = $this->Post->findFirst(array(
                'conditions'    =>  'id='.$id
                ));
            if(empty($post)){
                $this->e404('Page introuvable');
            }
            $this->set('post',$post);
        }
    }
?>
guifloco
Auteur

Personne ?

guifloco
Auteur

Merci !