Comment faire une erreur 404 ?

Petit nouveau ! | 4 Messages

18 août 2012, 02:24

Salut,
Comme dit sur le sujet je voudrais faire une page d'erreur 404, j'ai donc testé dans faire une mais il y à une erreur :/,

Voici ce que firefox me met :

Image

Le code en question :

Code : Tout sélectionner

<?php 1. class Controller{ 2. 3. public $request; 4. public $vars = array(); 5. public $layout = 'default'; private $rendered = false; function __construct($request){ 10. $this->request = $request; } public function render($view){ 15. if($this->rendered){ return false; } extract($this->vars); if(strpos($view,'/')===0){ $view.ROOT.DS.'view'.$view.'.php'; }else{ 20. $view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php'; } ob_start(); require($view); $content_for_layout = ob_get_clean(); 25. require ROOT.DS.'view'.DS.'layout'.DS.$this->layout.'.php'; $this->rendered = true; } public function set($key,$value=null){ 30. if(is_array($key)){ $this->vars += $key; }else{ $this->vars[$key] = $value; } 35. } } ?>
Les nombres au début de lignes sont leur numéros ils n'ont rien avoir avec le code.

Mammouth du PHP | 2278 Messages

18 août 2012, 08:06

Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

18 août 2012, 23:36

Salut merci du lien mais sa ne m'aide pas vraiment à corriger mon code qui à l'air proche du but :/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 août 2012, 12:20

en gros ton fichier n'existe pas.

affiche le chemin que tu utilise ça devrait t'aider.


la solution proposée repose sur le mécanisme d'apache, elle est intérrésante vue que la c'est le serveur qui gère la chose :)

ceci dit tu peux utiliser ton code, quand il fonctionnera, et la tu a besoin d'un var_dump() pour voir c que $view a dans le ventre :mrgreen:


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 451 Messages

20 août 2012, 06:11

C'est tout à fait normal car tu dis que si $view commence par un / et ben tu ne dis pas à quel chemin est égale $view donc remplace cela:
if(strpos($view,'/')===0){
         $view.ROOT.DS.'view'.$view.'.php';
      }else{
20.         $view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
      }
Par cela:
if(strpos($view,'/')===0){
         $view = ROOT.DS.'view'.$view.'.php';
      }else{
20.         $view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
      }
Tu avais simplement mit $view.ROOT.DS.'view'.$view.'.php'; hors que c'est $view = ROOT.DS.'view'.$view.'.php';

Petit nouveau ! | 4 Messages

21 août 2012, 12:31

Je te remercie énormément O_O, j'était en train de refaire mon code pour faire comme dans le Tuto alors qu'il n'y avait qu'a remplacer le / par un égale merci !