Alors, voila j'ai télécharger les sources code ses toujours pareil... la seul question que je me poses ses si une variable $url = 'localhost/'; existe car j'ai vue dans router & controller beaucoup de $url :( mes sans aucun résulta même avec les print_r ($variable) sa ne marche pas sa me dit erreur que sa :( que faire ?

PS: un screenshot :

Edit:
Controller vérifier sa viens pas de la :(

29 réponses


Grafikart
Réponse acceptée

Si tu regarde il doit mettre // au début du lien, dans le router quand tu retourne une url supprime le // si tu en as un, ça résoudra ton pb.

Gregory
Réponse acceptée

Dans la fonction url tu dois mettre un truc comme ça
return BASE_URL.str_replace('//','/','/'.url);

Gregory
Réponse acceptée

dans la class Router fonction url

Gregory
Réponse acceptée

c'est ta ligne 111

Gregory
Réponse acceptée

laisse ta ligne 111 comme c'etait avant et rajoute la ligne apres ta ligne 104

Grafikart
Réponse acceptée

Ne copie pas bêtement :( remplace url par $url....

Gregory
Réponse acceptée

Tu ne touches pas à ta ligne 111 qui doit être return BASE_URL.'/'.$url;
Ensuite après la ligne 104 mets cela et test :
return BASE_URL.str_replace('//','/','/'.$url);

Gregory
Réponse acceptée

return BASE_URL.str_replace('//','/',$url);

Gregory
Réponse acceptée

que donne un debug de $url?

Gregory
Réponse acceptée

ben debug($url);
si tu as créé la fonction debug bien sur dans le fichier functions.php dans le CORE

Gregory
Réponse acceptée

oui fais un print_r($url) si tu veux c'est pareil.
Je pense que ça change rien d'être sur wamp ou xampp

gamichan
Auteur

? j'ai pas compris :(

gamichan
Auteur
<?php
class Router{

    static $routes = array(); 
    static $prefixes = array(); 
    /**
    * Ajoute un prefix au Routing
    **/
    static function prefix($url,$prefix){
        self::$prefixes$url] = $prefix; 
    }

    /**
    * Permet de parser une url
    * @param $url Url à parser
    * @return tableau contenant les paramètres
    **/
    static function parse($url,$request){
        $url = trim($url,'/'); 
        if(empty($url)){
            $url = Router::$routes[0]'url']; 
        }else{
            $match = false; 
            foreach(Router::$routes as $v){
                if(!$match && preg_match($v'redirreg'],$url,$match)){
                    $url = $v'origin'];
                    foreach($match as $k=>$v){
                        $url = str_replace(':'.$k.':',$v,$url); 
                    } 
                    $match = true; 
                }
            }
        }

        $params = explode('/',$url);
        if(in_array($params[0],array_keys(self::$prefixes))){
            $request->prefix = self::$prefixes$params[0]];
            array_shift($params); 
        }
        $request->controller = $params[0];
        $request->action = isset($params[1]) ? $params[1] : 'index';
        foreach(self::$prefixes as $k=>$v){
            if(strpos($request->action,$v.'_') === 0){
                $request->prefix = $v;
                $request->action = str_replace($v.'_','',$request->action);  
            }
        }
        $request->params = array_slice($params,2);
        return true; 
    }

    /**
    * Permet de connecter une url à une action particulière
    **/
    static function connect($redir,$url){
        $r = array();
        $r'params'] = array();
        $r'url'] = $url;  
        $r'originreg'] = preg_replace('/([a-z0-9]+):(^\/]+)/','${1}:(?P<${1}>${2})',$url);
        $r'originreg'] = str_replace('/*','(?P<args>/?.*)',$r'originreg']);
        $r'originreg'] = '/^'.str_replace('/','\/',$r'originreg']).'$/'; 
        // MODIF
        $r'origin'] = preg_replace('/([a-z0-9]+):(^\/]+)/',':${1}:',$url);
        $r'origin'] = str_replace('/*',':args:',$r'origin']); 
        $params = explode('/',$url);
        foreach($params as $k=>$v){
            if(strpos($v,':')){
                $p = explode(':',$v);
                $r'params']$p[0]] = $p[1]; 
            }
        } 
        $r'redirreg'] = $redir;
        $r'redirreg'] = str_replace('/*','(?P<args>/?.*)',$r'redirreg']);
        foreach($r'params'] as $k=>$v){
            $r'redirreg'] = str_replace(":$k","(?P<$k>$v)",$r'redirreg']);
        }
        $r'redirreg'] = '/^'.str_replace('/','\/',$r'redirreg']).'$/';
        $r'redir'] = preg_replace('/:([a-z0-9]+)/',':${1}:',$redir);
        $r'redir'] = str_replace('/*',':args:',$r'redir']); 
        self::$routes] = $r; 
    }
    /**
    * Permet de générer une url à partir d'une url originale
    * controller/action(/:param/:param/:param...)
    **/
    static function url($url = ''){
        trim($url,'/'); 
        foreach(self::$routes as $v){
            if(preg_match($v'originreg'],$url,$match)){
                $url = $v'redir']; 
                foreach($match as $k=>$w){
                    $url = str_replace(":$k:",$w,$url); 
                }
            }
        }
        foreach(self::$prefixes as $k=>$v){
            if(strpos($url,$v) === 0){
                $url = str_replace($v,$k,$url); 
            }
        }
        return BASE_URL.'/'.$url; 
    }
    static function webroot($url){
        trim($url,'/');
        return BASE_URL.'/'.$url; 
    }
}
gamichan
Auteur


Me donne :

gamichan
Auteur

Je trouve sa dans quoi?

gamichan
Auteur

Qu'elle ligne ? :s

gamichan
Auteur

Marche pas :(

gamichan
Auteur

Hum... je ajoute : return BASE_URL.str_replace('//','/','/'.url); apres la ligne 104?

gamichan
Auteur

return BASE_URL.str_replace('//','/','/'.url);
Donc
return BASE_URL.str_replace('//','/','/'.$url); ???

oui désolé pour l'oubli du $ ;)

Un conseil reprends bien le tuto de Grafikart qui est super explicite, n'aie pas peur de le revisionner plusieurs fois, jusqu'à ce que tu comprennes ce que tu fais et ce qui se passe.

gamichan
Auteur

Non mes en fait j'ai juste pas compris ou je mes le ligne 111 est 104 a qu'elle ligne je doit rajouter la ligne truc ... :lol:

gamichan
Auteur

sa ne marche toujours pas :( sa me fait pareil même url http://http://posts/view/id:19/slug:1password-votre-coffre-fort-virtuel mes avec les slug etc...

gamichan
Auteur

Page introuvable :( + Affichages des slug est crash les autre page :(

gamichan
Auteur

Debug? comment ont fait sa ? print_r ($url) ?

gamichan
Auteur

Page introuvable pour tout article est page est aussi affiche du slug :(

gamichan
Auteur

Je suis sur xampp a votre avie je go wamp?

gamichan
Auteur

Je vais quand même tenter je redit tout sa :)

gamichan
Auteur

marche pas non plus :(

gamichan
Auteur

Warning: Missing argument 1 for Controller::e404(), called in D:\Xampp\htdocs\controller\PostsController.php on line 33 and defined in D:\Xampp\htdocs\core\Controller.php on line 79

Notice: Undefined variable: message in D:\Xampp\htdocs\core\Controller.php on line 81