[RE]Site de A à a ...

Par gamichan, il y a 14 ans


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, il y a 14 ans

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.

gamichan, il y a 14 ans

? j'ai pas compris :(

gamichan, il y a 14 ans
<?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, il y a 14 ans


Me donne :

Gregory, il y a 14 ans

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

gamichan, il y a 14 ans

Je trouve sa dans quoi?

Gregory, il y a 14 ans

dans la class Router fonction url

gamichan, il y a 14 ans

Qu'elle ligne ? :s

Gregory, il y a 14 ans

c'est ta ligne 111

gamichan, il y a 14 ans

Marche pas :(

Gregory, il y a 14 ans

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

gamichan, il y a 14 ans

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

Grafikart, il y a 14 ans

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

gamichan, il y a 14 ans

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

Gregory, il y a 14 ans

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, il y a 14 ans

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:

Gregory, il y a 14 ans

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, il y a 14 ans

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

gamichan, il y a 14 ans

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

Gregory, il y a 14 ans

que donne un debug de $url?

gamichan, il y a 14 ans

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

Gregory, il y a 14 ans

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

gamichan, il y a 14 ans

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

gamichan, il y a 14 ans

Je suis sur xampp a votre avie je go wamp?

Gregory, il y a 14 ans

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, il y a 14 ans

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

gamichan, il y a 14 ans

marche pas non plus :(

gamichan, il y a 14 ans

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