made PHP renderer optional in Templating
This commit is contained in:
parent
f2ac2a4c8a
commit
bc2ca8f1cf
@ -22,6 +22,7 @@
|
||||
<parameter key="templating.assets.version">null</parameter>
|
||||
<parameter key="templating.assets.base_urls" type="collection"></parameter>
|
||||
<parameter key="templating.name_converter.class">Symfony\Bundle\FrameworkBundle\Templating\TemplateNameConverter</parameter>
|
||||
<parameter key="templating.renderer.php.class">Symfony\Component\Templating\Renderer\PhpRenderer</parameter>
|
||||
<parameter key="debug.file_link_format">null</parameter>
|
||||
</parameters>
|
||||
|
||||
@ -103,6 +104,10 @@
|
||||
<argument type="service" id="service_container" />
|
||||
</service>
|
||||
|
||||
<service id="templating.renderer.php" class="%templating.renderer.php.class%">
|
||||
<tag name="templating.renderer" alias="php" />
|
||||
</service>
|
||||
|
||||
<service id="templating.loader" alias="templating.loader.filesystem" />
|
||||
|
||||
<service id="templating" alias="templating.engine" />
|
||||
|
@ -3,7 +3,6 @@
|
||||
namespace Symfony\Component\Templating;
|
||||
|
||||
use Symfony\Component\Templating\Loader\LoaderInterface;
|
||||
use Symfony\Component\Templating\Renderer\PhpRenderer;
|
||||
use Symfony\Component\Templating\Renderer\RendererInterface;
|
||||
use Symfony\Component\Templating\Helper\HelperInterface;
|
||||
|
||||
@ -38,8 +37,8 @@ class Engine implements \ArrayAccess
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param LoaderInterface $loader A loader instance
|
||||
* @param array $helpers A array of helper instances
|
||||
* @param LoaderInterface $loader A loader instance
|
||||
* @param array $helpers An array of helper instances
|
||||
*/
|
||||
public function __construct(LoaderInterface $loader, array $helpers = array())
|
||||
{
|
||||
@ -50,11 +49,11 @@ class Engine implements \ArrayAccess
|
||||
$this->charset = 'UTF-8';
|
||||
$this->cache = array();
|
||||
$this->globals = array();
|
||||
$this->renderers = array();
|
||||
|
||||
$this->addHelpers($helpers);
|
||||
|
||||
$this->initializeEscapers();
|
||||
|
||||
foreach ($this->escapers as $context => $escaper) {
|
||||
$this->setEscaper($context, $escaper);
|
||||
}
|
||||
@ -62,14 +61,9 @@ class Engine implements \ArrayAccess
|
||||
|
||||
public function setRenderers(array $renderers = array())
|
||||
{
|
||||
$this->renderers = $renderers;
|
||||
|
||||
if (!isset($this->renderers['php'])) {
|
||||
$this->renderers['php'] = new PhpRenderer();
|
||||
}
|
||||
|
||||
foreach ($this->renderers as $renderer) {
|
||||
$renderer->setEngine($this);
|
||||
$this->renderers = array();
|
||||
foreach ($renderers as $name => $renderer) {
|
||||
$this->setRenderer($name, $renderer);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,12 +41,8 @@ class EngineTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$engine = new ProjectTemplateEngine(self::$loader);
|
||||
$engine->setRenderers(array('foo' => self::$renderer));
|
||||
$this->assertEquals(array('foo', 'php'), array_keys($engine->getRenderers()), '__construct() takes an array of renderers as its third argument');
|
||||
$this->assertTrue(self::$renderer->getEngine() === $engine, '__construct() registers itself on all renderers');
|
||||
|
||||
$engine = new ProjectTemplateEngine(self::$loader);
|
||||
$engine->setRenderers(array('php' => self::$renderer));
|
||||
$this->assertTrue($engine->getRenderers() === array('php' => self::$renderer), '__construct() can overridde the default PHP renderer');
|
||||
$this->assertEquals(array('foo'), array_keys($engine->getRenderers()));
|
||||
$this->assertTrue(self::$renderer->getEngine() === $engine, 'setRenderers() registers itself on all renderers');
|
||||
}
|
||||
|
||||
public function testOffsetGet()
|
||||
@ -106,13 +102,15 @@ class EngineTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('The template "foo:name" does not exist (renderer: name).', $e->getMessage(), '->render() throws an InvalidArgumentException if no renderer is registered for the given renderer');
|
||||
}
|
||||
|
||||
$engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper()));
|
||||
$engine = new ProjectTemplateEngine(self::$loader, array(new SlotsHelper()));
|
||||
$engine->setRenderer('php', new PhpRenderer());
|
||||
$engine->set(new \SimpleHelper('bar'));
|
||||
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $view[\'foo\'].$foo ?>');
|
||||
self::$loader->setTemplate('layout.php', '-<?php echo $view[\'slots\']->get("_content") ?>-');
|
||||
$this->assertEquals('-barfoo-', $engine->render('foo', array('foo' => 'foo')), '->render() uses the decorator to decorate the template');
|
||||
|
||||
$engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper()));
|
||||
$engine = new ProjectTemplateEngine(self::$loader, array(new SlotsHelper()));
|
||||
$engine->setRenderer('php', new PhpRenderer());
|
||||
$engine->set(new \SimpleHelper('bar'));
|
||||
self::$loader->setTemplate('bar.php', 'bar');
|
||||
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>');
|
||||
@ -149,6 +147,7 @@ class EngineTest extends \PHPUnit_Framework_TestCase
|
||||
public function testGlobalsGetPassedToTemplate()
|
||||
{
|
||||
$engine = new ProjectTemplateEngine(self::$loader);
|
||||
$engine->setRenderer('php', new PhpRenderer());
|
||||
$engine->addGlobal('global', 'global variable');
|
||||
|
||||
self::$loader->setTemplate('global.php', '<?php echo $global; ?>');
|
||||
|
Reference in New Issue
Block a user