Bonjour à tous. J'ai un petit soucis à partir de la 34°mn du tuto.

En effet, lorsque je require le $view du PagesController j'ai le droit au message :

Warning: Controller::require(/htdocs/web/beta/view/pages/index.php) [controller.require]: failed to open stream: No such file or directory in /htdocs/web/beta/core/Controller.php on line 12

Voici mon Controller :

<?php
class Controller{

public $request;

function __construct($request){
$this->request = $request;
}

public function render($view){
$var
$view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
require($view);
die($view);
}
}
?>

& le PagesController :

<?php
class PagesController extends Controller{
function view($nom){
$testretour = 'bienvenue sur la page '.$nom;
$this->render('index');
}
}
?>

J'ai fait le tour de la question & téléchargé les sources & j'ai toujours le même problème...

Merci à toutes les personnes qui prendront quelques minutes pour y répondre...

3 réponses


Arthmael
Auteur
Réponse acceptée

ARRGGHHHHHHH

Hein grosseu error d'amateur,

mon fichier index n'existait pô, je suis nul, nul, nul...

Désolé d'avoir pollué votre temps...

& encore merci à toi Extra

salut,

je vois que ton chemin commence par htdocs, donc je supposes que tu n'es pas sur windows, donc peut être une base unix là derrière.

vérifie donc si tu as pas un problème de chemin, genre une majuscule quelque part et change en conséquence. car sur windows ça n'a aucune importance mais chez les autres c'est crucial, donc si tu respectes les majuscules tu seras compatible partout

a+

Arthmael
Auteur

Merci Extrarox, j'ai en effet déjà vérifié les majuscules. Au début j'avais un problème de directory que j'ai résolu ainsi :

Dans mon Index.php :

<?php
define('DS',DIRECTORY_SEPARATOR);
define('WEBROOT',str_replace(DS.'htdocs'.DS.'web','http://www.monsite.fr',dirname(\_\_FILE\_\_)));
define('ROOT',dirname(WEBROOT));
define('CORE',ROOT.DS.'core');
define('BASE_URL','www.monsite.fr'.DS.'beta');

require CORE.DS.'includes.php';
new Dispatcher();
?>

puis dans request :

<?php
class Request{
public $url;
function __construct(){
$this->url = str_replace(DS.DS,DS,$_SERVER'ORIG_PATH_INFO']);
}
}
?>

Ca a corrigé tous mes problèmes jusqu'à que j'écrive dans le controller : require($view)

Le message indique (je crois) qu'il ne trouve pas $view dans le PagesController.

si je supprime require($view), j'obtiens :

/htdocs/web/beta/view/pages/index.php

ce qui veux dire qu'il exécute la fonction view($nom) du PagesController...

J'espère avoir été assez clair dans mon explication...

Merci encore pour cette réponse rapide...