Symfony: eine Twig Extension erstellen

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 }}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.