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 :

[Twig] Equivalent de call_user_func ? [2.x]


Sujet :

Symfony PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut [Twig] Equivalent de call_user_func ?
    Salut,

    Je cherche activement un moyen de faire un call_user_func sous Twig. Est-ce que vous avez une idée ?

    En fait je souhaite récupérer une propriété d'une entité, sauf que le nom de la propriété est dynamique. En gros, je veux faire l'équivalent de : {{ entite.get(propriete) }}, avec propriete qui vaut Nom, Age, ou n'importe quoi d'autre. Sauf que ce getter n'est jamais défini, donc il faudrait un truc du genre : {{ call_user_func(entite, 'get' ~ propriete) }}.

    Je sais pas si vous voyez ce que je veux dire ?

    Ah et petite contrainte sinon ca serait pas drole : sans créer une extension Twig si possible :p

    Merci !

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Je ne vois pas vraiment comment tu pourrais faire sans extension Twig. Parce qu'en plus tu décris parfaitement ce qu'elle pourrait faire pour t'aider

    Pourquoi cette contrainte ?

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 605
    Points
    188 605
    Par défaut
    Définir des méthodes magiques sur l'entité (à la sf1) ?
    Définir un getter magique, qui renvoie ce qu'on lui passe ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Je valide, la seule méthode que je vois c'est le getter magique.

    Sinon il faudra obligatoirement créer une extension. Mais j'appuie également: pourquoi cette contrainte ? Quand tu crées un bundle rien ne t'empêche de créer aussi une extension twig... ou php.
    Nek, développeur amateur.
    Wiki (Symfony2) - Nekland - Minecraft

  5. #5
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Je vais faire l'extension ouais, j'avais juste pas envie.

    J'ai pas compris votre histoire du getter magique par contre ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 605
    Points
    188 605
    Par défaut
    Un peu de doc : http://php.net/manual/en/language.oop5.magic.php. Ensuite, c'est une fonctionnalité que beaucoup décrient en PHP, qui était fort utilisée dans sf1 mais à peu près totalement éliminée dans Sf2.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Aah ok le __get j'avais pas fait le lien. Ouais j'aime moyen, mais surtout dans mon bundle (c'est pour le autocomplete en fait), j'ai pas accès aux entité donc je ne peux pas les modifier.

    Du coup la seule solution possible c'est l'extension, je m'y colle.

    Merci !

  8. #8
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut
    Moi personnellement j'ai crée une extension twig qui appel la méthode call_user_func ça marche très bien ^^

  9. #9
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Je veux bien que tu la partages si tu veux

  10. #10
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    namespace Societe\ProjetBundle\Twig\Extension;
     
    use Symfony\Component\HttpKernel\KernelInterface;
    use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
     
    class TwigExtension extends \Twig_Extension
    {
        public function getFunctions()
        {
            return array(
                'call_user_func' => new \Twig_Function_Method($this, 'call_user_func', array('is_safe' => array('html')))
            );
        }
     
        public function call_user_func($entite, $critere)
        {
            return \call_user_func(array($entite, $critere));
        }
     
        public function getName()
        {
            return 'twigExtension';
        }
    }
    Societe\ProjetBundle\Resources\config\TwigExtension.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    services:
        twig.extension:
            class: CPCOM\CPWebCommonBundle\Twig\Extension\TwigExtension
            tags:
                - { name: twig.extension }
    app\config.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imports:
        - { resource: "@SocieteProjetBundle/Resources/config/TwigExtension.yml" }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2002, 09h12
  2. equivalent à explode?
    Par djridou dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2002, 11h01
  3. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

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