Bonjours à tous. Aujourd'hui je faisait tranquillement le tutoriel quand soudain j'arrive à 6:46 de vidéo. Je ne trouve pas la page comme indioquer sur la vido mais j'ai un message d'erreur :
Fatal error: Call to private Model::__construct() from context 'Controller' in C:\wamp\www\Site Tuto\core\Controller.php on line 61
Call Stack
1 0.0005 143928 {main}( ) ..\index.php:0
2 0.0030 170088 Dispatcher->__construct( ) ..\index.php:10
3 0.0034 174632 call_user_func_array ( ) ..\Dispatcher.php:13
4 0.0034 174728 PagesController->view( ) ..\Dispatcher.php:13
5 0.0034 174800 Controller->loadModel( ) ..\PagesController.php:6
En gros il m'indique une erreur à la ligne 61 du controller.php: voici mon controller.php:
<?php
/**
*Controller
**/
class Controller{
public $request; // Objet Request
private $vars = array(); // Variables à passer à la vue
public $layout = 'default'; // Layout à utiliser pour rendre la vue
private $rendered = false; // Si le rendu a été fait ou pas ?
/**
*Constructeur
* @params $request Objet request de notre application
**/
function __construct($request){
$this->request = $request;
}
/**
* Permet de rendre une vue
* @params $view Fichier à rendre (chemin depuis view ou nom de la vue)
**/
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;
}
/**
* Permet de passer une ou plusieurs variables à la vue
* @param $key nom de la variable oOU tableau de la variable
* @param $value Valeur de la variable
**/
public function set($key,$value=null){
if(is_array($key)){
$this->vars += $key;
}else{
$this->vars$key] = $value;
}
}
/**
* Permet de charger un model au niveau du controller
**/
function loadModel($name){
$file = ROOT.DS.'model'.DS.$name.'.php';
require_once($file);
if(!isset($this->$name)){
$this->$name = new $name();
}else{
echo 'pas chargé';
}
}
}
?>
A la ligne 61, je ne trouve pas mon erreur.
Sinon mon post.php :
<?php
class Post extends Model{
}
?>
Et mon pagescontroller.php :
<?php
class PagesController extends Controller{
function view(){
$this->loadModel('Post');
$this->loadModel('Post');
}
}
?>
Savez-vous d'où viendrait mon erreur sil vous plaît.
Merci d'avance pour vos futurs réponse.
Bonjour,
Essai d'ajouter public devant toutes tes methodes (function) qui n'ont pas public, private, static.
Merci de m'avoir répondu mais il me marque toujours la même erreur. Je n'ai pas un problème avec la ligne 61 ?
C'est normal que tu aie cette ligne 2 fois
$this->loadModel('Post');
dans ton pagescontroller.php ?