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 :(
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.
Dans la fonction url tu dois mettre un truc comme ça
return BASE_URL.str_replace('//','/','/'.url);
laisse ta ligne 111 comme c'etait avant et rajoute la ligne apres ta ligne 104
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);
ben debug($url);
si tu as créé la fonction debug bien sur dans le fichier functions.php dans le CORE
oui fais un print_r($url) si tu veux c'est pareil.
Je pense que ça change rien d'être sur wamp ou xampp
<?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;
}
}
Hum... je ajoute : return BASE_URL.str_replace('//','/','/'.url); apres la ligne 104?
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.
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:
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...
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