tuto vidéo jour 4 url des liens lire la suite

Par lexis parker, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.
avec mes liens lire la suite

Ce que je fais

Router.php

Entourez votre code avec ce symbole ```<?php class Router{ static $routes = array(); static function parse($url,$request){ $url = trim($url, '/'); if(empty($url)){ $url = Router::$routes[0]['url']; }else{ foreach(Router::$routes as $v){ if(preg_match($v['catcher'],$url,$match)){ $request->controller = $v['controller']; $request->action = isset($match['action']) ? $match['action'] : $v['action']; $request->params = array(); foreach($v['params'] as $k=>$v){ $request->params[$k] = $match[$k]; } if(!empty($match['args'])){ $request->params += explode('/',trim($match['args'],'/')); } return $request; } } } $params = explode('/',$url); $request->controller = $params[0]; $request->action = isset($params[1]) ? $params[1] : 'index'; $request->params = array_slice($params,2); return true; } //Connet static function connect($redir,$url){ $r = array(); $r['params'] = array(); $r['url'] = $url; $r['redir'] = $redir; $r['origin'] = str_replace(':action','(?P<action>([a-z0-9\-]+))',$url); $r['origin'] = preg_replace('/([a-z0-9]+):([^\/]+)/','${1}:(?P<${1}>${2})',$r['origin']); $r['origin'] = '/^'.str_replace('/','\/',$r['origin']).'(?P<args>\/?.*)$/'; $params = explode('/',$url); foreach($params as $k=>$v){ if(strpos($v,':')){ $p = explode(':',$v); $r['params'][$p[0]] = $p[1]; }else{ if($k==0){ $r['controller'] = $v; }elseif($k==1){ $r['action'] = $v; } } } $r['catcher'] = $redir; $r['catcher'] = str_replace(':action','(?P<action>([a-z0-9\-]+))',$r['catcher']); foreach($r['params'] as $k=>$v){ $r['catcher'] = str_replace(":$k","(?P<$k>$v)",$r['catcher']); } $r['catcher'] = '/^'.str_replace('/','\/',$r['catcher']).'(?P<args>\/?.*)$/'; self::$routes[] = $r; } // static function url($url){ foreach(self::$routes as $v){ if(preg_match($v['origin'],$url,$match)){ foreach($match as $k=>$w){ if(!is_numeric($k)){ $v['redir'] = str_replace(":$k",$w,$v['redir']); } } return BASE_URL.str_replace('//','/','/'.$v['redir'].$match['args']); } } return BASE_URL.'/'.$url; } } ?>

conf.php

<?php class Conf{ static $debug = 1; static $databases = array( 'default' => array( 'host' =>'localhost', 'database' => 'tuto', 'login' => 'root', 'password' => '' ) ); } Router::connect('/','posts/index'); Router::connect('blog/:slug-:id','posts/view/id:([0-9]+)/slug:([a-z0-9\-]+)'); Router::connect('blog/:action','posts/:action'); ?>

index.php

<div class="page-header"> <h1>Le blog pkrclub</h1> </div> <?php foreach ($posts as $k => $v): ?> <h2><?php echo $v->name; ?></h2> <?php echo $v->content; ?> <p><a href="<?php echo Router::url("/posts/view/id:{$v->id}/slug:$v->slug"); ?>">Lire la suite &rarr;</a></p> <?php endforeach ?> <div class="pagination"> <ul> <?php for($i=1; $i <= $page; $i++): ?> <li <?php if($i==$this->request->page) echo 'class="active"'; ?>><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li> <?php endfor; ?> </ul> </div>

Ce que je veux

j'aimerais que mon lien lire la suite soit de la forme
localhost/MonSite2/Site/post/pages-post-2

Ce que j'obtiens

Mais j'obtien plutot sa a la place
localhost/MonSite2/Site//posts/view/id:3/slug:pages-post
un peu d'aide svp mercie d'avence

2 réponses

betaWeb, il y a 9 ans

Salut,

Souci de quotes :

<p><a href="<?= Router::url('/posts/view/id:' . $v->id . '/slug:' . $v->slug); ?>">Lire la suite &rarr;</a></p>
lexis parker, il y a 9 ans

betaWeb merci bien pour ta réponse si rapide mais sa ne régler pas mon problème