Bonjour,
Je suis actuellement les tutoriaux de grafikart sur 'Developper un site' jour 2.
mais au moment d'afficher 'pages introuvable, le controller'.$this->request->controller.' n\'a pas de méthode '.$this->request->action
le message s'affiche...mais avec quelques erreures en supplément :
mon fichier PagesController.php :
<?php
class PagesController extends Controller{
public function index()
{
$this->render('index');
}
}
mon fichier Dispatcher.php :
<?php
class Dispatcher {
var $request;
public 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);
}
public function error($message)
{
$controller = new Controller($this->request);
$controller->set('message',$message);
$controller->render('/errors/404');
}
public function loadController()
{
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
mon fichier Controller.php
<?php
class Controller{
public $request;
public $vars = array();
public $layout = 'default';
private $rendered = false;
public 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 += $key;
} else {
$this->vars[$key] = $value;
}
}
}
Si une âme charitable pourrait m'apporter son aide :))
Bon bhe ducoup j'ai résolu mon problème tout seul,
j'avais juste oublier un die();
a la fin de ma fonction errors.