Bonjour

je suis en train de faire un tableau pour récupérer et formater les urls mais je me retrouve avec un problème pour récupérer certain champs
voici ma route

Router::connect('/page/:slug-id',array('controller'=> 'pages','action'=>'show'),array('pass' => array ('id','slug')));

et en mode debug ma requête

object(CakeRequest) {
    params => array(
        'plugin' => null,
        'controller' => 'pages',
        'action' => 'show',
        'named' => array(
            'slug' => 'ma-premiere-page',
            'id' => '18'
        ),
        'pass' => array()
    )

je n'arrive pas à récupérer dans pass ces deux champs

'slug' => 'ma-premiere-page',
            'id' => '18'

Si vous avez une idée
Merci d'avance

2 réponses


Pakito
Réponse acceptée

Au niveau de ta route, il me semble qu'il y a une erreur sur la conception du routing.
Il faudrait :slug-:id, au lieu de :slug-id :

Router::connect('/page/:slug-:id',array('controller'=> 'pages','action'=>'show'),array('pass' => array ('id','slug')));

Cela devrait résoudre le problème.

ca fonctionne merci

Petite question j'ai vu pas mal de personne revenir sur un sujet que je traite une erreur lié au menu.ctp

Warning (2): Invalid argument supplied for foreach() [APP/View/Elements/menu.ctp, line 3]

et

Declaration of Post::afterFind() should be compatible with Model::afterFind($results, $primary = false) [APP/Model/Post.php, line 3]

Ma page controller

<?php
class PagesController extends AppController {
      public $uses = array('Post');
      function menu(){
         $pages = $this-> Post->find('all',array(
        'conditions' => array('type'=>'page','online'=>1)
         ));
         return $pages;
    }
      function show($id = null,$slug = null){
   }

}

mon Post.php

<?php
class Post extends AppModel{

    public function afterFind($data){
    foreach($data as $k=>$d){
    if (isset($d'Post']'slug']) && isset($d'Post']'id'])){
      $d'Post']'link'] = array(
      'controller' => 'pages',
      'action' => 'show' ,
      'id' => $d'Post']'id'],
      'slug' => $d'Post']'slug']
        );
     }

     $data$k] = $d;
}
    debug($data);
    }
}

mon menu.ctp

<?php $pages = $this->requestAction(array('controller'=>'pages','action'=>'menu'));?>
<ul class="nav navbar-nav">
    <?php foreach($pages as $k=>$v): $v = current($v);?>
    <li> <?php echo $this->Html->link($v'name'],$v'link']);?></li>
     <?php endforeach; ?>
  </ul>

Je n'ai pas beaucoup trouver d'infos sur ce sujet

Cdt