Bonjour

Suite au tuto "créer un mvc" de GRAFIKART j'ai un message d'erreur que je n'arrive pas à résoudre.
Pouvez-vous m'aider s'ils vous plait.
Merci beaucoup

Warning: require(controllers/.php) [function.require]: failed to open stream: No such file or directory in...

7 réponses


controllers/.php

C'est bien normal ça ? je me serai attendu à voir 'controllers.php' il n'y aurait pas un souci dans l'include ?
En tout cas montre ton code si tu veux qu'on t'aide...

marygil
Auteur
<?php
define('WEBROOT',str_replace('index.php','',$_SERVER'SCRIPT_NAME']));
define('ROOT',str_replace('index.php','',$_SERVER'SCRIPT_FILENAME']));
require(ROOT.'core/model.php');
require(ROOT.'core/controller.php');
mysql_connect('127.0.0.1','root','');
mysql_select_db('mvc');
$params = explode('/',$_GET'p']);
$controller = $params[0];
$action = isset($params[1]) ? $params[1] : 'index';
require('controllers/'.$controller.'.php');
$controller = new $controller();
if(method_exists($controller, $action)){
    unset($params[0]); unset($params[1]);
    call_user_func_array(array($controller,$action),$params);
    //$controller->$action();
}
else{
    echo 'erreur 404'; 
}
?>

La ligne 12

$controller = empty($params[0]) ? 'ControllerParDefaut' : $params[0];
marygil
Auteur

Bonjour

Merci pour votre aide mais j'ai la même erreur

<?php
define('WEBROOT',str_replace('index.php','',$_SERVER'SCRIPT_NAME']));
define('ROOT',str_replace('index.php','',$_SERVER'SCRIPT_FILENAME']));
require(ROOT.'core/model.php');
require(ROOT.'core/controller.php');
mysql_connect('127.0.0.1','root','');
mysql_select_db('mvc');
$params = explode('/',$_GET'p']);
//$controller = $params[0];
$controller = empty($params[0]) ? 'ControllerParDefaut' : $params[0]; 
$action = isset($params[1]) ? $params[1] : 'index';
require('controllers/'.$controller.'.php');
$controller = new $controller();
if(method_exists($controller, $action)){
    unset($params[0]); unset($params[1]);
    call_user_func_array(array($controller,$action),$params);
    //$controller->$action();
}
else{
    echo 'erreur 404'; 
}
?>

Warning: require(controllers/ControllerParDefaut.php) [function.require]: failed to open stream: No such file or directory in ...

marygil
Auteur
<?php
define('WEBROOT',str_replace('index.php','',$_SERVER'SCRIPT_NAME']));
define('ROOT',str_replace('index.php','',$_SERVER'SCRIPT_FILENAME']));
require(ROOT.'core/model.php');
require(ROOT.'core/controller.php');
mysql_connect('127.0.0.1','root','');
mysql_select_db('mvc');
$params = explode('/',$_GET'p']);
//$controller = $params[0];
$controller = empty($params[0]) ? 'ControllerParDefaut' : $params[0]; 
$action = isset($params[1]) ? $params[1] : 'index';
require('controllers/'.$controller.'.php');
$controller = new $controller();
if(method_exists($controller, $action)){
    unset($params[0]); unset($params[1]);
    call_user_func_array(array($controller,$action),$params);
    //$controller->$action();
}
else{
    echo 'erreur 404'; 
}
?>

Il faut que tu crées un controller par défault. (dans le dossier controllers) Dans ce cas c'est "ControllerParDefaut" mais tu peux changer par autre chose…
Cette erreur dit qu'il ne peut pas ouvrir se fichier car ce dernier est introuvable :)

Pour le controller par défaut, tu peux par exemple créer un controller home. Une fois ceci fait, ton code ressemblera à ça :

<?php
define('WEBROOT',str_replace('index.php','',$_SERVER'SCRIPT_NAME']));
define('ROOT',str_replace('index.php','',$_SERVER'SCRIPT_FILENAME']));
require(ROOT.'core/model.php');
require(ROOT.'core/controller.php');
mysql_connect('127.0.0.1','root','');
mysql_select_db('mvc');
$params = explode('/',$_GET'p']);
$controller = empty($params[0]) ? 'home' : $params[0]; 
$action = isset($params[1]) ? $params[1] : 'index';
require('controllers/'.$controller.'.php');
$controller = new $controller();
if(method_exists($controller, $action)){
    unset($params[0]); unset($params[1]);
    call_user_func_array(array($controller,$action),$params);
}
else{
    echo 'erreur 404'; 
}
?>