Bonjour à tous,
De nouveau souci dans le tuto jour 4 à 48 min 44:
J'ai encodé dans le fichier router:
<?php
class router{
static $routes=array();
/**
* Permet de parser une url
* @param $url Url à parser
* @return tableau contenant les paramètres
**/
static function parse($url,$request)
{
$url = trim($url,'/');
$params = explode('/',$url);
$request->controller = $params[0];
$request->action = isset($params[1]) ? $params[1]:'index';
$request->params = array_slice($params,2);
return true;
}
/**
* Connect
**/
static function connect($redir,$url)
{
$r = array();
$r'origin']='/'.str_replace('/','\/',$url).'/';
$r'origin']= preg_replace('/([a-z0-9]+):(^\/]+)/','${1}:(?P<${1}>${2})',$r'origin']);
self::$routes]=$r;
debug($r);
}
/**
*
**/
static function url($url)
{
foreach(self::$routes as $v)
{
if(preg_match($v'origin'],$url,$match))
{
debug($match);
}
}
return $url;
}
}
?>
Dans conf
<?php
class conf
{
static $debug = 1;
static $databases = array('default' => array( 'host' => 'localhost',
'database' => 'asduo',
'login'=> 'root',
'password' => ''
)
);
}
Router::connect('post/:slug-:id','posts/view/id:([0-9]+)/slug:([a-z0-9\-]+)');
?>
Donc sur mon site j'obtiens pour le 1er debug:
Array
(
[origin] => /posts\/view\/id:(?P([0-9]+)\)/slug:(?P([a-z0-9\-]+))/
)
Alors que je dois obtenir:
Array
(
[origin] => /posts\/view\/id:(?P([0-9]+)\/slug:(?P([a-z0-9\-]+))/
)
Donc souci, une parenthèe apparaît.
De plus, Le deuxième debug ne donne plus rien.
Si j'enlève la ligne:
$r'origin']= preg_replace('/([a-z0-9]+):(^\/]+)/','${1}:(?P<${1}>${2})',$r'origin']);
Alors mon debug fonctionne et j'obtiens:
Array
(
[0] => posts/view/id:5/slug:premier-article
[1] => 5
[2] => premier-article
)
Ce qui correspond au tuto.
Cela doit être encore une bétise mais j'ai relu relu relu et pas moyen de trouver.
Merci.
Un petit Up.
J'ai réessayer de réencoder mais j'obtiens la même erreur.
*se gratte la tête*
Est-ce grave docteur?