Support for context passed into a partial as an argument

This commit is contained in:
David Deutsch 2013-07-26 01:27:07 +02:00
parent e6b4182a75
commit 3229ad7c45
2 changed files with 13 additions and 3 deletions

View File

@ -154,7 +154,7 @@ class Handlebars_Template
array_push($this->_stack, array(0, $newStack, false));
$buffer .= $this->_inverted($context, $current);
array_pop($this->_stack);
break;
break;
case Handlebars_Tokenizer::T_COMMENT :
$buffer .= '';
break;
@ -297,7 +297,7 @@ class Handlebars_Template
return '';
}
}
/**
* Process partial section
*
@ -309,6 +309,11 @@ class Handlebars_Template
private function _partial($context, $current)
{
$partial = $this->handlebars->loadPartial($current[Handlebars_Tokenizer::NAME]);
if ( $current[Handlebars_Tokenizer::ARGS] ) {
$context = $context->get($current[Handlebars_Tokenizer::ARGS]);
}
return $partial->render($context);
}

View File

@ -157,7 +157,12 @@ class Handlebars_Tokenizer
default:
if ($this->tagChange($this->ctag, $text, $i)) {
// Sections (Helpers) can accept parameters
if ($this->tagType == self::T_SECTION) {
// Same thing for Partials (little known fact)
if (
($this->tagType == self::T_SECTION)
|| ($this->tagType == self::T_PARTIAL)
|| ($this->tagType == self::T_PARTIAL_2)
) {
$newBuffer = explode(' ', trim($this->buffer), 2);
$args = '';
if (count($newBuffer) == 2) {