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