Usando instanceof en Twig

Es posible que si te encuentras en esta tesitura hay algo que no estés haciendo bien, en la vista no se deberían hacer estas comprobaciones. Sin embargo hay ocasiones como el caso del polimorfismo que esta comprobación puede ser muy útil, en este artículo veremos cómo usar instanceof en Twig mediante una extensión en tres pasos.

Vamos a suponer que tenemos un proyecto Symfony2 configurado, disponemos de las clases Person, Worker y Student, estas dos últimas heredarán de Person y todas estarán bajo el namespace App\SMTCBundle\Model.

Lo primero que creamos es una extensión de Twig:

Sobrescribimos el método getTests que devuelve un array de tests que podremos usar en twig.

Ahora sólo queda registrar la extensión, en nuestro caso usamos normalmente XML para los servicios, crearemos un fichero twig.xml:

Es importante el tag twig.extension para que Symfony la reconozca como extensión de Twig.

Finalmente si hemos creado el fichero twig.xml faltará indicarle a Symfony que lo lea cuando arranque, para ello modificamos el fichero que se encarga de cargar y gestionar la configuración del bundle que se encuentra en el directorio DependencyInjection y en nuestro caso la clase se llama AppSMTCExtension:

Ahora sólo queda usarlo en cualquier plantilla Twig, suponiendo que llega a la vista una variable person:

En próximos artículos veremos cómo añadir extensiones y veremos alguna útiles.