Créer un MVC

Par marygil, il y a 14 ans


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

MartinT, il y a 14 ans
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, il y a 14 ans
<?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'; 
}
?>
bhamzapro, il y a 14 ans

La ligne 12

$controller = empty($params[0]) ? 'ControllerParDefaut' : $params[0];
marygil, il y a 14 ans

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, il y a 14 ans
<?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'; 
}
?>
PhiSyX, il y a 14 ans

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 :)

PaulB319, il y a 14 ans

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'; 
}
?>