[TwigBundle] implemented context auto-escaping in Twig templates based on the template extension
This commit is contained in:
parent
76ef8da030
commit
1e84f1eef1
@ -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',
|
||||
|
@ -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.
|
||||
*
|
||||
|
Reference in New Issue
Block a user