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.

1 réponse


A tu regarder la balise html5 base?
Et si elle ne te convient pas, tu peux passer par une url absolue.