2016-04-17 14 views
1

Als ich meine Gewohnheit Ruffilter es mit fehlschlagen:Twig Filter nicht in Generator verfügbar

[Twig_Error_Syntax] Unknown "snake_case" filter in "controller/controller.php.twig" at line 86. 

Der Dienst wird registriert:

services: 
l91_sulu_backend.twig.converter.extension: 
    class: L91\Sulu\Bundle\BackendBundle\Twig\ConverterTwigExtension 
    tags: 
     - { name: twig.extension } 

Es ist zu finden unter container:debug

Die Klasse Aussehen wie folgt:

<?php 

namespace L91\Sulu\Bundle\BackendBundle\Twig; 

class ConverterTwigExtension extends \Twig_Extension 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    public function getFilters() 
    { 
     return [ 
      new \Twig_SimpleFilter('snake_case', [$this, 'snakeCaseFilter']), 
     ]; 
    } 

    /** 
    * @param string $input 
    * 
    * @return string 
    */ 
    public function snakeCaseFilter($input) 
    { 
     return strrev($input); // just to test 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function getName() 
    { 
     return 'l91_sulu_backend_converter'; 
    } 
} 

Auch twig:debug Liste meine snake_case Filter.

Die Zweigdatei wird von einem Generator gerendert, der mit einem Symfony-Befehl aufgerufen wird.

Und hier der Aufruf des Filters

'{{ translatePrefix }}.{{ column|snake_case }}', 

Antwort

1

es Fand heraus, als ein Generator sein eigenes TwigEnvironment verwenden müssen Sie sich alle verwendeten Erweiterungen registrieren.

/** 
* @return \Twig_Environment 
*/ 
public function getTwigEnvironment() 
{ 
    $twigEnvironment = parent::getTwigEnvironment(); 

    $twigEnvironment->addExtension(new ConverterTwigExtension()); 

    return $twigEnvironment; 
}