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 tester le type d'une variable


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 17
    Points
    17
    Par défaut Twig tester le type d'une variable
    Bonjour,

    j'aimerais savoir s'il est possible de tester le type d'une variable en TWIG ?

    par exemple quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {% if var is string %}
    ou tout autre syntaxe.

  2. #2
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Si tu ne vois pas de fonction qui corresponde a ton besoin sur cette page :

    http://twig.sensiolabs.org/documentation (tout en bas).

    Tu n'as plus qu'à créer une extension.

    Olivier

  3. #3
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut
    salut,
    y a l'opérateur sameas qui peut peut être t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% if foo.attribute is same as(false) %}
        the foo attribute really is the 'false' PHP value
    {% endif %}
    a+

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Twig s'occupe de l'affichage, il ne devrait s'occuper que de tableaux et de chaines.

    Pourquoi cherches tu à faire ça?

  5. #5
    Membre confirmé Avatar de ben.IT
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 431
    Points : 486
    Points
    486
    Par défaut
    dans mon cas, je voulais afficher "oui" pour une valeur booléene à "true" et "non" pour une valeur booléenne à "false". Par contre pour la valeur numérique 1, je voulais afficher le chiffre 1 et non "oui".
    a+

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Points : 218
    Points
    218
    Par défaut
    Et as-tu trouvé ta solution? je voudrais faire exactement la même chose.
    Merci

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {% if my_variable is same as(NULL) %} {# équivaut à if($my_variable===NULL)#}
    inconnu
    {% elseif my_variable is same as(true) %}
    vrai
    {% elseif if my_variable is same as(false) %}
    faux
    {% else %}
    {{my_variable}}
    {% endif%}

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Points : 218
    Points
    218
    Par défaut
    Donc, il n'y a pas de fonction pour tester directement le type de variable?
    Je voulais également détecter le format date, pour afficher un format spécifique...
    Merci

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Points : 218
    Points
    218
    Par défaut
    J'ai trouvé la solution en créant un service comme extension de Twig.
    Je mets mon code
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <?php
    namespace KALAN\NetRDVBundle\TwigExtension;
    /**
     * Description of KALANTwigExtension
     *
     * @author LAURE
     */
    class KALANTwigExtension extends \Twig_Extension {
      public function isBoolean($var)
      {
        return is_bool($var);
      }
      public function typeOf($var, $type_test=null)
        {
     
        switch ($type_test)
        {
            default:
                    return false;
                    break;
     
            case 'array':
                    return is_array($var);
                    break;
     
            case 'bool':
                    return is_bool($var);
                    break;	
     
            case 'float':
                    return is_float($var);
                    break;
     
            case 'int':
                    return is_int($var);
                    break;
     
            case 'numeric':
                    return is_numeric($var);
                    break;
     
            case 'object':
                    return is_object($var);
                    break;
     
            case 'scalar':
                    return is_scalar($var);
                    break;
     
            case 'string':
                    return is_string($var);
                    break;
            case 'datetime':
                    return ($var instanceof \DateTime);
                    break;
        }
    }
     
     
      // Twig va exécuter cette méthode pour savoir quelle(s) fonction(s) ajoute notre service
      public function getFunctions()
      {
        return array(
          'checkBoolean' => new \Twig_Function_Method($this, 'isBoolean')
        );
      }
        public function getTests()
      {
        return array(
          'typeOf' => new \Twig_Function_Method($this, 'typeOf')
        );
      }
      // La méthode getName() identifie votre extension Twig, elle est obligatoire
      public function getName()
      {
        return 'KALANTwigExtension';
      }
     
     
    }
    Déclaration du service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    kalan_net_rdv.twig_extension:
            class: KALAN\NetRDVBundle\TwigExtension\KALANTwigExtension
            tags:
                - {name: twig.extension}
    Appel dans une vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% if checkBoolean(field) %}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% elseif field is typeOf('datetime')%}

Discussions similaires

  1. Tester le type d'une variable de type "Variant"
    Par nono27200 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/08/2007, 21h26
  2. Tester le type d'une variable
    Par jmbonnaz dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/06/2007, 17h37
  3. tester le type d'une variable
    Par MayOL69bg dans le forum Langage
    Réponses: 5
    Dernier message: 16/04/2007, 14h31
  4. Tester le type d'une variable
    Par Débéa dans le forum Général Python
    Réponses: 2
    Dernier message: 03/08/2006, 16h45
  5. Tester le type d'une variable
    Par mzt.insat dans le forum Linux
    Réponses: 5
    Dernier message: 30/05/2006, 18h37

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