On 02-12-2009 at 22:44:19 Ekke Vasli <ekke.va...@skype.net> wrote:

EXPECTED OUTPUT (and as of 1.1.16 and 1.2.0):
<div>page-a:<div>Value from the first blocks</div>page-b:<div>Valuebis from subpage block</div></div>

REAL OUTPUT (1.2.1):
<div>page-a:<span>a value should go here</span>page-b:<div>Valuebis from subpage block</div></div>

Metal:fill-slot values are not carried over from within nested macro calls any more, unable to find another way to achieve the same result. Is this intentional behavior?

It does work with tal:define global / replace structure but it is not as elegant solution as slots. Any better ideas how work around it?

If it isn't on purpose, a simple patch fixes it back to 1.2.0 way (and then pls could above test be included in testsuite too?): diff -r PHPTAL-1.2.1/PHPTAL/Context.php /apache2/php/lib/php/PHPTAL/ Context.php
 >         if ($this->_parentContext) {
> return $this->_parentContext->hasSlot($key); // setting slots in any context
 >         }

That's an excellent bug report, thanks!

The problem isn't in callbacks (phew!), but in Context::hasSlot() implementation. It should be:

   public function hasSlot($key)
return isset($this->_slots[$key]) || ($this->_parentContext && $this->_parentContext->hasSlot($key));

The fix is in SVN.

regards, Kornel

PHPTAL mailing list

Reply via email to