2016-04-17 4 views
1

Когда я звоню мой пользовательский фильтр это завершаться:Twig фильтр не доступен в генератор

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

Услуга регистрации:

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

Он находится в списке container:debug

Класс внешности например:

<?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'; 
    } 
} 

Также twig:debug перечислите мой фильтр snake_case.

Файл twig визуализируется генератором, вызываемым командой symfony.

А вот вызов фильтра

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

ответ

1

Найдено это как генератор использует свой собственный TwigEnvironment вам необходимо зарегистрировать все используемые расширения самостоятельно.

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

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

    return $twigEnvironment; 
}