merged branch symfony/escaping-839 (PR #4105)

Commits
-------

1e84f1e [TwigBundle] implemented context auto-escaping in Twig templates based on the template extension

Discussion
----------

[2.2] Implements context escaping for Twig (fixes #839)
This commit is contained in:
Fabien Potencier 2012-05-07 10:51:11 +02:00
commit 6e6eb6c462
2 changed files with 24 additions and 0 deletions

View File

@ -86,6 +86,10 @@ class TwigExtension extends Extension
$container->setAlias('debug.templating.engine.twig', 'templating.engine.twig');
}
if (!isset($config['autoescape'])) {
$container->findDefinition('templating.engine.twig')->addMethodCall('setDefaultEscapingStrategy', array(array(new Reference('templating.engine.twig'), 'guessDefaultEscapingStrategy')));
}
$this->addClassesToCompile(array(
'Twig_Environment',
'Twig_ExtensionInterface',

View File

@ -47,6 +47,26 @@ class TwigEngine extends BaseEngine implements EngineInterface
}
}
public function setDefaultEscapingStrategy($strategy)
{
$this->environment->getExtension('escaper')->setDefaultStrategy($strategy);
}
public function guessDefaultEscapingStrategy($filename)
{
// remove .twig
$filename = substr($filename, 0, -5);
// get the format
$format = substr($filename, strrpos($filename, '.') + 1);
if ('js' === $format) {
return 'js';
}
return 'html';
}
/**
* Renders a template.
*