Instance d'opérateur dans Twig / Symfony 2?
J'ai une matrice mixte comme celui-ci (numéros de téléphone mobile et entités):
$targets = array();
$targets[] = '+32647651212';
$targets[] = new Customer();
Dans mon template Twig, j'ai appeler getMobile()
si target
est un Customer
ou simplement imprimer le numéro, si c'est un nombre (string
).
Est là quelque chose comme instanceof
opérateur dans Twig?
<ul>
{% for target in targets %}
<li>{{ target instance of MyEntity ? target.getMobile : target }}</li>
{% else %}
<li>Nothing found.</li>
</ul>
source d'informationauteur gremo
Vous devez vous connecter pour publier un commentaire.
Dans \Twig_Extension vous pouvez ajouter des tests
Et ensuite utiliser comme
Ici une belle façon de faire instanceof opérateur dans twig avec Extension :
1) Créer votre extension de fichier où vous voulez
(ex: src/OC/YourBundle/Twig/InstanceOfExtension.php )
Avec \Twig_Extension vous pouvez faire beaucoup de choses, filtre, fonction, mais maintenant, nous allons créer un Test.
Nous avons donc mettre en œuvre la fonction getTests(), et à l'intérieur de nous créer un nouveau \Twig_SimpleTest
Le 1er arugment est le nom du test que vous créez, et la seconde un appelable.
(peut être une fonction() {}).
2) le Registre de services.yml
(ex: src/OC/YourBundle/Resources/config/services.yml)
3) Puis l'utiliser dans twig comme ce
Source de Adrien Brault => https://gist.github.com/adrienbrault/7045544
Autre solution sans ReflectionClass :
Vérifier http://php.net/manual/fr/function.is-a.php
Une autre solution :
puis dans votre twig :
OU
Utilisation
default
filtre Twig comme ceci:Assez vieux, mais je ne peux pas voir ici encore une bonne possibilité d'obtenir ceci:
Enity:
Twig: