Bonjour à tous !

Voici ma question, pour 99% de mes requêtes j'utilise un profile_id pour effectuer mes recherche.

Voici un petit exemple :) :

Marcel à un profile, il a poster plusieurs message et a décider d'afficher ses informations. Id du profile de Marcel est 4.

Je veut afficher les messages de Marcel: /MessagesController/GetMessages/4.
Je veut afficher le profile de Marcel: /ProfilesController/GetProfile/4.

Jusque la tout allais parfaitement bien, j'ai par la suite modifier mes route.

Les messages de Marcel: /4/Messages/.
Le profile de Marcel: /4/Profile/.

Oui mais 4 c'est moche moi je veut /Marcel/Messages/

Et c'est la que ça cloche, car mes Controllers s'attende à recevoir un profile_id et non pas le nom du profile.

Ma question est la suivante: est-il possible de "court-circuiter" le profile_name ("Marcel"), charger ID associer et l'injecter dans les controllers ?

Ou alors je dois refaire tout mes fonctions pour charger les infos via le profile_name et non plus id.

D'avance, un grand MERCI !

7 réponses


Va voir vu cette page.

Pour info, tu peux faire passer n'importe quelle donnée à travers $id qui est relative à ton "profile_id". Donc au lieu d'écriture dans ta vue [users][id], tu écris [users][name].

zaarkan
Auteur

Bonjour palmer08,

merci pour ta réponse mais hélas cela ne réglés pas mon problème.

Je m'explique j'ai déjà pas mal de Fonction coder et dans la plupart, elle s'attende a recevoir profile_id.

Par exemple, pour les message :

GetMessage( $profile_id )
{
    return $this->Message->find('all', array('conditions'=>array('Message.profile_id' => $profile_id)));
}

Et c'est comme cela pour pas mal de fonctionnalités.

Donc ma question est la suivante, est t'il possible dans le cas d'une route d'associer un profile_id au profile name.

J'ai donc une "jolie" route /Marcel/Message

et lors de l'appelle il passe profile_id a mes fonctions.

Si pas je refais mes fonctions, d'avance merci.

Moi a fonctionné avec:

GetMessage($id){
    return $this->Message->find('all', array('conditions' => array('Message.profil_name' => $id)));
}

Et dans ta vue ton lien:

$this->Html->link('Voir Message', array('controller' => 'ton controller', 'action' => 'ton action', $message'Profile']'name']));
zaarkan
Auteur

c'est ce que je disait je dois recoder les fonctions :)

En remplacent le profile_id par profile_name.

Moi j'aurais aimer une solution qui ne m'oblige pas à recoder l'ensemble de mes fonctions pour changer l'argument de recherche. :)

Ah ok, j'avais pas bien compris, dsl :)

Bon courage.

zaarkan
Auteur

Pas de soucis. Bon j'ai tjrs pas trouver, je vais devoir surement recoder une partie des fns :s

zaarkan
Auteur

Personne n'aurais une solution ? :)