|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Yoann BianchinDéveloppeur informatique Inscription : avril 2007 Messages : 158 ![]() |
Bonjour,
je ne suis pas parvenu à trouver une discussion sur ce sujet, même si je pense qu'il y en as car cela doit être assez banale, je n'ai pas trouvé les bon termes pour ma recherche ... J'ai une table contenant des demandes qui ont chacune un statut. J'ai donc une table demandes avec un champ id_statut et une table statuts avec des enregistrements id_statut / lib_statut. A l'affichage de ma table des demandes, j'ai donc pour chaque ligne un id_statut. Et ce que j'aimerais savoir, c'est la meilleur façon de coder le fait que l'affichage soit non pas l'id_statut mais son libellé ! J'ai procédé de cette façon, qui marche parfaitement, mais dans un souci d'optimisation de mon code, j'aimerais connaitre la meilleur façon de faire : Dans mon fichier indexSuccess.php qui affiche ma table demandes j'ai fait : Code :
<td><?php echo D2iStatutsPeer::retrieveByPk($D2iDemandes->getIdStatut())->getTxtStatut() ?></td> Bizoo |
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Le plus simple est de renseigner une méthode 'magique' __toString() pour ton objet Statut :
Code :
public function __toString() { return $this->getLibelle(); } |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Yoann BianchinDéveloppeur informatique Inscription : avril 2007 Messages : 158 ![]() |
J'ai des méthodes __toString pour tous mes objets !
Mais à l'affichage il est demander le $objet_demande->getIdStatut(); Donc ça me retourne la valeur du champ id_statut de la table demande et donc ça ne fait aucun lien avec l'objet statut... |
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
C'est curieux. Cela dit, je n'utilise que Doctrine, c'est peut-être spécifique à l'administration avec Propel auquel cas je ne peux pas t'aider. Mais à tout hasard : est-ce que la relation demande -> statut est bien déclarée dans le schema.yml ?
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Yoann BianchinDéveloppeur informatique Inscription : avril 2007 Messages : 158 ![]() |
Oui oui tout est bien déclaré dans le schema !
Je ne trouve pas étonnant que cela me retourne l'id car la fonction getId récupère la valeur du champ de l'objet, aucun lien n'est fait avec une autre classe, c'est un simple getter. Mais ce que je pensais, c'est qu'il y avait peut être une meilleur façon de faire en utilisant un partial ou je ne sais quoi approchant ... |
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Ta requête, bizarrement placée dans un template, elle devrait l'être dans le contrôleur, te retourne un objet.
L'affichage d'un objet utilise __toString() si elle existe, c'est géré par symfony, donc indépendant de l'ORM utilisé. Vérifie si ton objet retourné est bien unique (quoique, vu la requête, je ne vois pas comment il pourrait être une liste). Vérifie si, à partir de l'objet tu peux afficher le toString par un $monObjet->__toString() Après, on va creuser ailleurs.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#7 | |
|
Membre régulier
![]() |
Citation:
Oui mais ou renseigner cette méthode dans le modèle ? Comment l' appeler ensuite ? Merci. |
|
|
00
|
|
|
#8 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Il n'y a pas d'appel à faire, c'est la méthode magique automatiquement appelée si on n'en précise pas d'autre.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() |
Comment s' en servir ?
Classique j' ai des champs ids que j' aimerai transformé en nom ou prenom.. Ex: $contributor=>getContributorId() j'ai testé $contributor=>getContributorId()->__toString(). PAs good.. |
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() ![]() Vivian PennelDeveloppeur Symfony | JSF/Seam Inscription : août 2004 Messages : 173 ![]() |
__toString() est une méthode appelée lorsque l'objet a besoin d'être converti en chaîne de caractères.
Par exemple lors d'une concaténation Code :
Je ne connais pas bien propel, mais je ne comprends pas l'intérêt de vouloir absolument l'ID ? Si tu as ton objet tu fais tout simplement qui appellera __toString() de la classe Contributor
__________________
Mon blog : http://blog.developpez.com/vivian-pennel/ |
||
|
00
|
|
|
#11 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Yo, ça me paraissait tellement évident que j'avais pas compris la question.
La réponse ci dessus est la bonne ! Si non, utilise directement ce que tu souhaites voir apparaître...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com