Problème tuto Développer un site : Jour 4, Gestion des routes

Par killianwebmaster, il y a 12 ans


Bonjour, j'ai un problème avec le tuto Développer un site : Jour 4, Gestion des routes, car à la fin de la vidéo quand je clique sur un post, la page du post est introuvable sur firefox, mais sur chrome et explorer le post s'affiche bien.
Voici la page PostsController dans le dossier controller:
<?php
class PostsController extends Controller{

function index(){
$perPage = 1;
$this->loadModel('Post');
$condition = array('type'=>'post', 'online' => 1);
$d'posts'] = $this->Post->find(array(
'conditions' => $condition,
'limit' => ($perPage*($this->request->page-1)).','.$perPage
));
$d'total'] = $this->Post->findCount($condition);
$d'page'] = ceil($d'total'] / $perPage);
$this->set($d);
}

function view($id,$slug){
$this->loadModel('Post');
$d'post'] = $this->Post->findFirst(array(
'fields' => 'id,slug,content,name',
'conditions' => array('id'=>$id,'type'=>'post', 'online' => 1)
));
if(empty($d'post'])){
$this->e404('Page introuvable');
}
if($slug != $d'post']->slug){
$this->redirect("posts/view/id:$id/slug:".$d'post']->slug,301);
}
$this->set($d);

}

}
?>

Et voici le fichier Router.php dans le fichier core:
<?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,'/');
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;
}

//Connect
function connect($redir,$url){
$r = array();

$r'params'] = array();
$r'url'] = $url;
$r'redir'] = $redir;
$r'origin'] = str_replace(':action','(?P<action>([a-zA-Z0-9]+))',$url);
$r'origin'] = preg_replace('/([a-zA-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-zA-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;
}

//URL
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;
}

}
?>

Si quelqu'un peut m'aider à résoudre ce problème, je le remercie.
Merci d'avoir lu mon message. Merci.

3 réponses

Nenuas, il y a 12 ans

Salut !

Peut-être que ta version FireFox n'est pas adaptée à ton site. Va le mettre à jour :)

killianwebmaster, il y a 12 ans

Bonjour, merci de votre réponse, mais j'ai la dernière version de firefox.

killianwebmaster, il y a 12 ans

Bonjour, j'ai trouvé mon erreur, dans le conf.php j'avais mis post à la place de blog.