Symfony: eine Twig Extension erstellen

19. Dezember 2013

1. man erstellt eine Datei namens TheExtension.php die folgendermaßen aussieht:

  1. <?php
  2. namespace Something\Core\Extension\Twig;
  3. use Twig_Extension;
  4. use Twig_Filter_Method;
  5. class TheExtension extends Twig_Extension
  6. {
  7.   public function getFilters()
  8.   {
  9.     return array(
  10.         'cleanup' => new Twig_Filter_Method($this, 'cleanup')
  11.     );
  12.   }
  13.   public function cleanup($txt){
  14.     $txt = str_replace(array("ä", "ö", "ü", "Ä", "Ü", "Ö", "ß"), array("ae", "oe", "ue", "Ae", "Ue", "Oe", "ss"), $txt);
  15.     $txt = mb_strtolower($txt);
  16.     $txt = str_replace(" ", "_", $txt);
  17.     $txt = preg_replace('/[^A-Za-z0-9_]/', '', $txt);
  18.     $txt = preg_replace('/_{2,}/','_',$txt);
  19.     return $txt;
  20.   }
  21.   public function getName()
  22.   {
  23.     return 'the_extension';
  24.   }
  25. }

2. diese speichert man in seinem Projekt ab, z.B. unter src/Something/Core/Extension/Twig/TheExtension.php

3. in der config.yml definiert man diesen Service folgendermaßen:

  1. services:
  2.     core.twig.the_extension:
  3.       class: Something\Core\Extension\Twig\TheExtension
  4.       tags:
  5.           - { name: twig.extension }

Und dann kann man die Extension direkt in twig verwenden:

  1. {{ testvar|cleanup }}