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
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
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();
}
}
}
?>
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);
}
}
?>