Bonjour,
j'aimerais savoir s'il est possible de tester le type d'une variable en TWIG ?
par exemple quelque chose comme ceci :
ou tout autre syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {% if var is string %}
Bonjour,
j'aimerais savoir s'il est possible de tester le type d'une variable en TWIG ?
par exemple quelque chose comme ceci :
ou tout autre syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {% if var is string %}
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
salut,
y a l'opérateur sameas qui peut peut être t'aider :
a+
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 %}
Twig s'occupe de l'affichage, il ne devrait s'occuper que de tableaux et de chaines.
Pourquoi cherches tu à faire ça?
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+
Et as-tu trouvé ta solution? je voudrais faire exactement la même chose.
Merci
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%}
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
J'ai trouvé la solution en créant un service comme extension de Twig.
Je mets mon code
Déclaration du service
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'; } }
Appel dans une vue
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}
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')%}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager