Symfony2 では、デフォルトで無効になっている Twig モジュールがいくつかあります。{% debug %}
それらの 1 つは、タグを追加するデバッグ拡張機能です (開発環境で役立ちます)。
それを有効にするには、特に難しいことはありません。このサービスを構成に追加します。
debug.twig.extension:
class: Twig_Extensions_Extension_Debug
tags:
- { name: 'twig.extension' }
しかし、{% sandbox %}
タグを有効にする方法は?
私の問題は、拡張機能のコンストラクターがセキュリティポリシーを取ることです:
public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
{
$this->policy = $policy;
$this->sandboxedGlobally = $sandboxed;
}
twigのドキュメントを読むことで、 (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);
サンドボックスを使用する直前に、サービス内でそのようなことを行うことができますが、これは、慣れ親しんだ依存性注入ほど明確ではありません。
Symfony2 で twig のサンドボックス拡張機能を有効にするより適切な方法はありますか?