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?