Salut à tous, voilà en bidouillant un peut pour faire fonctionné une fonction Auth, j'ai changer une ligne de routing, malheureusement je n'arrive plus à revenir sur mon code qui marchais..
Alors voici ma ligne actuelle de route :
Router::connect('posts/:slug-:id',array('controller'=>'posts','action'=>'show'),array(
'pass'=> array('slug','id'), 'slug'=>'[a-z0-9\-]+','id' =>'[0-9]+'));
et donc quand je rentre une adresse du type de la route :
/CakePHP/posts/jftyu-36
j'ai l'erreur "The action jftyu-36 is not defined in controller PostsController" alors que dans mon routing j'ai défini l'action show.
Si quelqu'un pouvais m'aider ?
J'en profite comme je suis assez débutant sur CakePHP pour savoir si il y à quelque chose à faire pour éviter les injections sql?
Merci à vous
Ok c'est bon j'ai trouver! J'ai pas tout bien compris mais $id me retourné le slug et $slug l'id...
J'ai juste inversé
function show($id = null,$slug = null)
par
function show($slug = null,$id = null)
Salut,
Dans ton routing ajoute un slash au départ :
Router::connect('/posts/:slug-:id',array('controller'=>'posts','action'=>'show'),array(
'pass'=> array('slug','id'), 'slug'=>'[a-z0-9\-]+','id' =>'[0-9]+'));
Pour ce qui est des injections SQL si tu utilises les tableaux dans tes conditions pas de problème.
Birzat
Avec le slash j'ai cette erreur qui s'affiche :
"The requested address '/CakePHP/posts/jftyu-36' was not found on this server."
Grrr pourquoi j'ai pas sauvegardé un fichier...
tu peut mettre ca avec une * a la fin:
Router::connect('/posts/:slug-:id/*',array('controller'=>'Posts','action'=>'show'),
array('pass' => array('slug','id'),'slug'=>"[a-z0-9_\-]+",'id' => '[0-9]+'));
C'est bizarre, le routing semble bon.
Quelques questions :
Peux-tu montrer ta methode "show" de ton controller posts
As-tu d'autres routes ?
Quelle est l'URL complète ? Avant .../CakePHP/posts/jftyu-36
Birzat
Vraiment bizarre :/
Voici la méthode show
function show($id = null,$slug = null){
if(!$id)
throw new NotFoundException('Aucune page ne correspond à cet ID');
$page = $this->Post->find('first',array(
'conditions' => array('id' =>$id,'type'=>'post')
));
if(empty($page))
throw new NotFoundException('Aucune page ne correspond à cet ID');
if($slug != $page'Post']'slug'])
$this->redirect($page'Post']'link'],301);
$d'page'] = current($page);
$this->set($d);
}
Oui j'ai d'autres routes, qui marche très bien!
Router::connect('/', array('controller' => 'Cartes', 'action' => 'index'));
Router::connect('/admin',array('controller'=>'posts','action'=>'index','admin'=>true));
Router::connect('/posts/:slug-:id',array('controller'=>'posts','action'=>'show'),array(
'pass'=> array('slug','id'), 'slug'=>'[a-z0-9\-]+','id' =>'[0-9]+'));
Router::connect('/regions/:slug/:id',array('controller'=>'posts','action'=>'produit'),array(
'pass'=> array('slug','id'), 'slug'=>'[a-z0-9\-]+','id' =>'[0-9]+'));
Router::connect('/regions/:slug/:id/:slug2/:id2',array('controller'=>'posts','action'=>'article'),array(
'pass'=> array('slug','slug2','id'), 'slug'=>'[a-z0-9\-]+','slug2'=>'[a-z0-9\-]+','id' =>'[0-9]+'));
Et je suis en localhost donc l'url c'est juste localhost avant!
Peut être une erreur autre par que sur les routes ?
Merci de l'aide en tout cas!
Un problème avec l'$id apparemment dans la function
$page = $this->Post->find('first',array(
'conditions' => array('id' =>$id,'type'=>'post')
));
ne trouve pas l'id il faut que j'utilise
$this->params'id']
à la place de $id
mais je tombe ensuite sur une boucle infini en rajoutant le reste du code