Bonjour,

Cela concerne le tuto Creer un site avec Cake Php.
J'ai tenté de rajouter un troisième paramètre dans un lien prédéfini dans mon model. le paramètre 'type'

<?php 
class Product extends AppModel{

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

Cependant, lors de l'ajout, lorsque je fait un debug($this->request->params), il me fait ca :

Array
(
    [plugin] => 
    [controller] => products
    [action] => show
    [named] => Array
        (
            [id] => 3
            [slug] => latte-coffee
            [type] => 0
        )
    [pass] => Array
        (
        )
)

Voici un exemple sans le troisieme parametre dans mon model :

Array
(
    [plugin] => 
    [controller] => products
    [action] => show
    [slug] => latte-coffee
    [id] => 3
    [named] => Array
        (
        )
    [pass] => Array
        (
            [0] => 3
            [1] => latte-coffee
        )
)

Voila, je ne comprend pas pourquoi il me transfère mes paramètres dans [named] ?
Aillant pourtant bien formaté mon routing :

Router::connect('/product/:slug-:id',array('controller'=>'products','action'=>'show'),array('pass'=> array('id','slug','type'), 'id'=>'[0-9]+','slug' =>'[a-z0-9\-]+','type' => '[0-9]+'));

Du coup je n'arrive pas à utiliser mes parametre pour mes actions, exemple :

function show($id = null, $slug=null, $type=0){...}

3 réponses


vonghesj
Auteur

bon ben voila comment j'ai dû procéder :

function show($i=null, $s=null, $t=null){
        $ids = $this->request->params'named']'id']; 
        $slug = $this->request->params'named']'slug'];
        $type = $this->request->params'named']'type'];

Salut, J'ai eu le meme soucis à un moment, j'ai effacer la ligne de routes.php et je l'ai réécrit et cela a fonctionné

vonghesj
Auteur

ah bon, merci pour ton conseil, je testerai la prochaine fois que j'en aurai l'occasion d'utiliser 3 paramètres.