Jak poprawnie włączyć rozszerzenie piaskownicy twig w Symfony2?

W Symfony2 domyślnie jest wyłączony moduł Twig. Jednym z nich jest rozszerzenie debugowania, które dodaje{% debug %} tag (przydatne w środowisku programistycznym).

Aby to włączyć, nic naprawdę trudnego, możesz dodać tę usługę do swojej konfiguracji:

  debug.twig.extension:
    class: Twig_Extensions_Extension_Debug
    tags:
      - { name: 'twig.extension' }

Ale jak włączyć{% sandbox %} etykietka?

Moim problemem jest to, że konstruktor rozszerzenia stosuje zasady bezpieczeństwa:

public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
{
    $this->policy            = $policy;
    $this->sandboxedGlobally = $sandboxed;
}

Czytającdokumentacja gałązkowa, Widziałem sposób na zrobienie tego natywnie (bez Symfony2):

$tags = array('if');
$filters = array('upper');
$methods = array(
    'Article' => array('getTitle', 'getBody'),
);
$properties = array(
    'Article' => array('title', 'body'),
);
$functions = array('range');
$policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);
$sandbox = new Twig_Extension_Sandbox($policy);
$twig->addExtension($sandbox);

Mogę zrobić coś takiego w usłudze tuż przed użyciem piaskownicy, ale to nie jest tak jasne, jak wstrzyknięcie zależności, do którego jesteśmy przyzwyczajeni.

Czy istnieje lepszy / właściwy sposób włączenia rozszerzenia piaskownicy twig w Symfony2?

questionAnswers(1)

yourAnswerToTheQuestion