Symfony: eine Twig Extension erstellen


December 19, 2013 at 12:49
Symfony

1. man erstellt eine Datei namens TheExtension.php die folgendermaßen aussieht:
<?php
namespace Something\Core\Extension\Twig;
use Twig_Extension;
use Twig_Filter_Method;

class TheExtension extends Twig_Extension
{
  public function getFilters()
  {
    return array(
        'cleanup' => new Twig_Filter_Method($this, 'cleanup')
    );
  }

  public function cleanup($txt){
    $txt = str_replace(array("ä", "ö", "ü", "Ä", "Ü", "Ö", "ß"), array("ae", "oe", "ue", "Ae", "Ue", "Oe", "ss"), $txt);
    $txt = mb_strtolower($txt);
    $txt = str_replace(" ", "_", $txt);
    $txt = preg_replace('/[^A-Za-z0-9_]/', '', $txt);
    $txt = preg_replace('/_{2,}/','_',$txt);
    return $txt;
  }

  public function getName()
  {
    return 'the_extension';
  }
}
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:
services: 
    core.twig.the_extension:
      class: Something\Core\Extension\Twig\TheExtension
      tags:
          - { name: twig.extension }
Und dann kann man die Extension direkt in twig verwenden:
{{ testvar|cleanup }}

Tags: Extension symfony Twig


Hinterlasse einen Kommentar:
Suche