Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2011, 11h53   #1
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
Par défaut Modèle MVC et getter

Bonjour,

Je me pose une question :
J'ai une relation 1..N entre personne et institut (une personne a un institut et un institut a plusieurs personnes).
Je crée un module pour les personnes et je veux afficher le nom complet de l'institut (champ fullname dans institut) donc j'ai créé un getter getInstituteFullname() dans la classe Person mais seulement voilà, une personne peut ne pas avoir d'institut et dans ce cas là j'aimerai afficher N/A donc voici ma question :
Pour respecter au mieux le modèle MVC, le getter doit retourner N/A ou alors NULL et lors de l'affichage j'affiche la chaîne N/A ou l'email en fonction ?

J'imagine que c'est la dernière solution la mieux mais je veux en avoir le coeur net.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 15h14   #2
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
Si ton schema est bien conçu (si tu acceptes de nous le partager c'est encore mieux) tu devrais pouvoir utiliser les accesseurs générés par symfony.

Quelque chose du genre devrait suffire :

Code :
1
2
echo $person->getInstitute(); // si tu as un champ name dans ta classe Institute
echo $person->getInstitute()->getFullname() // ou getNomCompletDansTonSchema
Si tu veux afficher N/A alors une simple condition du genre "si ta méthode getInstitute te retourne un objet Institute alors tu affiche son nom, sinon c'est qu'il n'en a pas d'attribué et dans ce cas tu affiches N/A"

J'aurais tendance à voir quelque chose dans ce goût là:

Code :
1
2
3
4
5
6
7
8
if (is_object($person->getInstitute()))
{
  echo $person->getInstitute()->getFullname(); //Fullname à changer par ton champs
}
else
{
  echo "N/A";
}
is_object n'est sans doute pas la meilleure méthode, il faudrait plutôt que tu compares le type de ton retour à un objet de type Institute. Mais essaye déjà comme ça et peaufine ensuite.
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h02   #3
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
Jusque là on est d'acord. J'ai plutôt envi de savoir si le echo N/A tu le mettrai dans le getter ou si tu le mettrai à l'affichage ?
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h42   #4
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
A l'affichage, sans hésitation.

Si tu ajoutes un retour "N/A" dans ton getter tu perds en cohérence : là tu veux récupérer un nom donc une chaine de texte, mais imagine que tu veux récupérer l'objet entier : dans un cas ça te retourne un objet et dans l'autre une chaine de caractères, un message à afficher ou quoi que ce soit d'autre.

Et si ta fonction fait directement un echo "N/A" c'est encore pire !

Utilise l'accesseur généré par symfony de manière très classique et affiche quelque chose (le nom, ou "N/A") dans ta template en fonction du retour que tu as.
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h54   #5
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
C'est bien ce que je pensai. Merci pour la confirmation.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h11.


 
 
 
 
Partenaires

Hébergement Web