Front & Back

Blog sobre el Desarrollo de aplicaciones web

Back end Cómo crear extensiones para Twig

El sistema de plantillas de Symfony (Twig), ofrece por defecto una gran cantidad de funciones. No obstante, es posible que en alguna ocasión, necesitemos extender esa funcionalidad. Las extensiones de Twig, sirven precisamente para eso; a través de ellas podemos utilizar funciones dentro de plantillas.

Imaginemos que queremos crear una función "base64_encode” que codifique una cadena en base 64, y que podamos usar dentro de una plantilla de la siguiente manera:

{{ "cadena"|base64_encode }}

Primero creamos nuestra clase dentro de nuestro "namespace" en la carpeta "Extension". El contenido sería el siguiente:

namespace JVC\FrontBundle\Extension;

class JVCTwigExtension extends \Twig_Extension
{

public function getFilters()
{
return array('base64_encode' => new \Twig_Filter_Method($this, 'base64Encode'));
}
public function getName()
{
return 'jvc_twig_extension';
}

public function base64Encode($string)
{
return base64_encode($string);
}
}

(El código es bien sencillo).

Ahora en nuestro contenedor de servicios pondremos nuestra extensión:
jvc.twig.extension:
class: JVC\FrontBundle\Extension\JVCTwigExtension
tags:
- { name: twig.extension }
¡Así de simple!