
Originally Posted by
kyberfabrikken
Why can't that be done in the other example(s) ?
Because of execution order, the result will be different. In those examples it's admittedly not evident, but it gets to that when you introduce shared data.
I constructed an example using the latest standard Renderer and a ReverseRenderer that renders the tree bottom-up instead of top-down. I think this will make my point clear.
Index.tpl:
Code:
<p>Index.tpl. Rendered: <?php echo ++$vars->rendered; ?></p>
<core:import select="Foo" />
<p>Index.tpl. Rendered: <?php echo ++$vars->rendered; ?></p>
<core:import select="Foo" />
Foo.tpl:
Code:
<p>Foo.tpl. Rendered: <?php echo ++$vars->rendered; ?></p>
The test setup:
PHP Code:
$composite = new ViewComposite(new Template('Index.tpl'));
$composite->attach(new ViewComposite(new Template('Foo.tpl')));
$renderer = new (Reverse)Renderer($composite);
$renderer->setDefaults(array('rendered' => 0));
$renderer->execute($context);
And the results... with Renderer:
Code:
Index.tpl. Rendered: 1
Foo.tpl. Rendered: 3
Index.tpl. Rendered: 2
Foo.tpl. Rendered: 3
And with ReverseRenderer:
Code:
Index.tpl. Rendered: 2
Foo.tpl. Rendered: 1
Index.tpl. Rendered: 3
Foo.tpl. Rendered: 1
Assuming I did the same with a "linear" setup, the results would be the following:
Code:
Index.tpl. Rendered: 1
Foo.tpl. Rendered: 2
Index.tpl. Rendered: 3
Foo.tpl. Rendered: 4
I'll later attach a code package with the working code and demonstration.
Bookmarks