[Templating] renamed the template object in templates to view instead of this

This commit is contained in:
Fabien Potencier 2010-02-04 18:19:07 +01:00
parent 28554c5d08
commit 8ff8464420
5 changed files with 8 additions and 48 deletions

View File

@ -159,7 +159,7 @@ class Engine
*/
public function __get($name)
{
return $this->helperSet->get($name);
return $this->$name = $this->helperSet->get($name);
}
/**

View File

@ -37,6 +37,7 @@ class PhpRenderer extends Renderer
if ($template instanceof FileStorage)
{
extract($parameters);
$view = $this->engine;
ob_start();
require $template;
@ -45,6 +46,7 @@ class PhpRenderer extends Renderer
else if ($template instanceof StringStorage)
{
extract($parameters);
$view = $this->engine;
ob_start();
eval('; ?>'.$template.'<?php ;');

View File

@ -33,34 +33,4 @@ abstract class Renderer implements RendererInterface
{
$this->engine = $engine;
}
/**
* Forwards the call to the associated template instance.
*
* @param string $method The method name
* @param array $arguments The array of arguments
*
* @return mixed The return value returned by the associated template instance method
*/
public function __call($method, $arguments)
{
if (!method_exists($this->engine, $method))
{
throw new \RuntimeException(sprintf('Call to undefined method %s::%s().', get_class($this->engine), $method));
}
return call_user_func_array(array($this->engine, $method), $arguments);
}
/**
* Forwards the call to the associated template instance.
*
* @param string $name The property name
*
* @return mixed The value returned by the associated template instance
*/
public function __get($name)
{
return $this->engine->$name;
}
}

View File

@ -191,13 +191,13 @@ catch (InvalidArgumentException $e)
}
$engine->getHelperSet()->set(new SimpleHelper('bar'));
$loader->setTemplate('foo.php', '<?php $this->extend("layout"); echo $this->foo.$foo ?>');
$loader->setTemplate('layout.php', '-<?php echo $this->get("content") ?>-');
$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $view->foo.$foo ?>');
$loader->setTemplate('layout.php', '-<?php echo $view->get("content") ?>-');
$t->is($engine->render('foo', array('foo' => 'foo')), '-barfoo-', '->render() uses the decorator to decorate the template');
$loader->setTemplate('bar.php', 'bar');
$loader->setTemplate('foo.php', '<?php $this->extend("layout"); echo $foo ?>');
$loader->setTemplate('layout.php', '<?php echo $this->render("bar") ?>-<?php echo $this->get("content") ?>-');
$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>');
$loader->setTemplate('layout.php', '<?php echo $view->render("bar") ?>-<?php echo $view->get("content") ?>-');
$t->is($engine->render('foo', array('foo' => 'foo', 'bar' => 'bar')), 'bar-foo-', '->render() supports render() calls in templates');
class CompilableTemplateLoader extends Loader implements CompilableLoaderInterface

View File

@ -18,7 +18,7 @@ use Symfony\Components\Templating\Renderer\Renderer;
use Symfony\Components\Templating\Storage\Storage;
use Symfony\Components\Templating\Loader\FilesystemLoader;
$t = new LimeTest(3);
$t = new LimeTest(1);
class ProjectTemplateRenderer extends Renderer
{
@ -42,15 +42,3 @@ $t->diag('->setEngine()');
$renderer = new ProjectTemplateRenderer();
$renderer->setEngine($engine);
$t->ok($renderer->getEngine() === $engine, '->setEngine() sets the engine instance tied to this renderer');
// __call()
$t->diag('__call()');
$renderer = new ProjectTemplateRenderer();
$renderer->setEngine($engine);
$t->is($renderer->get('foo'), 'bar', '__call() proxies to the embedded engine instance');
// __get()
$t->diag('__get()');
$renderer = new ProjectTemplateRenderer();
$renderer->setEngine($engine);
$t->is((string) $renderer->bar, 'foo', '__get() proxies to the embedded engine instance');