Nom de profile / Route / profile_id

Par zaarkan, il y a 14 ans


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

palmer08, il y a 14 ans

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, il y a 14 ans

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.

palmer08, il y a 14 ans

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, il y a 14 ans

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. :)

palmer08, il y a 14 ans

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

Bon courage.

zaarkan, il y a 14 ans

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

zaarkan, il y a 14 ans

Personne n'aurais une solution ? :)