IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Calculer âge, controler ? twig ? [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut Calculer âge, controler ? twig ?
    Bonjour,

    Je débute avec symfony2 et je me pose une question.

    Actuellement j'ai une action qui me renvoie un utilisateur, et une autre action qui me renvoie une liste d'utilisateurs.

    Chaque utilisateur à une propriété dateDeNaisse, rempli lors de l'inscription (donc jamais vide).

    J'aimerais afficher sur ma page l'âge de la personne, et pas directement la date et là .. je bloque !

    Dans le cas d'un seul utilisateur, je peux toujours modifier sa propriété dans le controler.

    Je récupère tous les users via la méthode traditionnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $liste_users= $this->getDoctrine()
                                 ->getEntityManager()
                                 ->getRepository('RencUserBundle:User')
                                 ->findAll();
    J'ai ensuite la méthode render qui renvoit cette $liste vers ma page Twig.

    Sur ma page twig, comment je peux afficher l'âge en fonction de cette date et la date actuelle ? En PHP traditionnelle, j'aurais fait appelle à une fonction de transformation genre date_diff, mais là en twig, je ne vois pas de filters qui réponde à ma question ...

    Ajouter un champs âge serait une solution, mais je trouve que ça duplique l'info pour rien dans ma BDD ...

    Merci d'avance
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    le plus simple serait d'avoir dans ta classe User une méthode "getAge" qui s'occuperait de calculer l'age en fonction de la date de naissance.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Je comprend l'idée.

    Cependant, comment l'afficher ensuite dans ma page ?

    Dans mon controller, je veux bien faire un getAge() (méthode de l'entité user) qui récupère la propriété dateNaissance du user + date du moment.

    Je stocke ça dans une variable. Ca m'oblige à ajouter un paramètre âge dans mon array de la méthode render, non ? Si j'ai plusieurs user, c'est pas gérable ... et si j'ajoute la propriété âge dans mon entity, au prochaine doctrine:schema:update il va m'ajouté le champs dans la BDD. Sauf si on peut ajouter des variables sans que Symfony le considère comme champs bdd ?

    Vous me direz, ce n'est qu'un champs de plus, qui éviterait des calculs par la suite, mais je pense qu'il y a une solution propre pour faire cela, vu que c'est quelque chose qui doit arriver souvent sur les sites web.

    Merci.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 82
    Points
    82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class User 
    {
        public function getAge()
        {
            $dateInterval = $this->dateNaissance->diff(new \DateTime());
     
            return $dateInterval->y;
        }
    }
    Rien à stocker, aucune variable à créer. Je pense que tu as un gros problème dans la compréhension de la POO et t'attaquer à Symfony n'est pas une bonne idée avant d'avoir des bases solides.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Citation Envoyé par Muspil Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class User 
    {
        public function getAge()
        {
            $dateInterval = $this->dateNaissance->diff(new \DateTime());
     
            return $dateInterval->y;
        }
    }
    Rien à stocker, aucune variable à créer. Je pense que tu as un gros problème dans la compréhension de la POO et t'attaquer à Symfony n'est pas une bonne idée avant d'avoir des bases solides.
    Je suis développeur DOTNET, rien à voir avec les notions POO. C'était juste une question d'utilisation de Symfony/twig

    Ma question était bête mais je viens de trouver. Je ne savais pas que je pouvais appeler des méthodes directement depuis une vue Twig mais en effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h5>Âge : {{ user.getDate() }}</h5>
    fonctionne très bien.

    Résolu !
    Règle N° 1 : Si tout va bien, ne touchez à rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul dans controle
    Par maub85 dans le forum IHM
    Réponses: 4
    Dernier message: 21/09/2010, 07h47
  2. Réponses: 10
    Dernier message: 01/02/2008, 19h36
  3. expression a utiliser dans un controle calculé
    Par gui-llaume dans le forum IHM
    Réponses: 2
    Dernier message: 26/11/2007, 12h33
  4. Réponses: 8
    Dernier message: 27/07/2006, 13h14
  5. Je n'arrive pas a faire un controle dans un calcul javascript
    Par carmen256 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 13/07/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo