Bonjour,
Après avoir suivit un tuto, sur les site en MVC, je suis confronter à un très gros problème : Suivant ou j'appel mon controller, les liens CSS et image sont "mal écrit".
Comme un bonne exemple vaut mieux qu'un long discours voila :
voici ma methode render() dans ma class Controller principal, qui me creer ma vue de la page appelée.
public function render($url, $tab = NULL)
{
$chemin = explode('/', $url);
$css = '';
$js = '';
($tab == NULL)? $tab='' : $tab = $tab ;
$_SESSION'flash'] = (isset($tab'flash']))? $tab'flash'] : '' ;
$_SESSION'flash_error'] = (isset($tab'flash_error']))? $tab'flash_error'] : '' ;
if (strpos($chemin[0], 'Module') !== false){
// ajouts des fichiers css du module
$scandir = scandir(ROOT.'modules/'.$chemin[0].'/public/css');
unset($scandir[0]);
unset($scandir[1]);
ob_start();
foreach($scandir as $k => $v){
echo '<link rel="stylesheet" type="text/css" media="screen" href="' . WEBROOT . 'modules/' . $chemin[0] . '/public/css/' . $v . '" />';
}
$css = ob_get_clean();
// ajouts des fichiers js du module
$scandir = scandir(ROOT . 'modules/' . $chemin[0] . '/public/js');
unset($scandir[0]);
unset($scandir[1]);
ob_start();
foreach($scandir as $k => $v){
echo '<script type="text/javascript" src="' . WEBROOT . 'modules/' . $chemin[0] . '/public/js/' . $v . '"></script>' ;
}
$js = ob_get_clean();
// ajout de la vue
ob_start();
require(ROOT . 'modules/' . $chemin[0] . '/views/' . $chemin[2]);
$content = ob_get_clean();
// ajout du layout
require(ROOT.'views/default/layout.php');
} elseif ($chemin[0] === 'index') {
header('Location:' . WEBROOT);
}
}
celle ci vous l'aurais compris va me charger mes page php est les ajouter.
Seulement, si j'appel ma page : http://localhost/monsite/ je tombe sur ma page d'accueil et la tout est beau.
mais si je vais sur la page http://localhost/monsite/demoModule/demoAction , alors lorsqu'il ajoute mon layout, les liens css démarre à localhost/monsite/demoModule ( donc lien css : localhost/monsite/demoModule/public/css/style.css ), au lieux de démarer à /localhost/monsite/ ( donc liens css : localhost/monsite/public/css/style.css )
j'aimerai bien que n'importe d'ou ( adress que se soit localhost/monsite ou localhost/monsite/demo ou localhost/monsite/demo/demo2/demo3 ) il me charge toujours a partir de localhost/monsite.
Merci.
A tu regarder la balise html5 base?
Et si elle ne te convient pas, tu peux passer par une url absolue.