- bugfix in nested {foreach} saved item attributes got overwritten https://github.com/smarty-php/smarty/issues/33

This commit is contained in:
Uwe Tews
2015-05-13 00:33:23 +02:00
parent e4741e9dd7
commit 07c781d9cf
3 changed files with 8 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
 ===== 3.1.24.dev ===== (xx.xx.2015)  ===== 3.1.24.dev ===== (xx.xx.2015)
- bugfix {$smarty.constant.TEST} did fail on undefined constant https://github.com/smarty-php/smarty/issues/28 - bugfix {$smarty.constant.TEST} did fail on undefined constant https://github.com/smarty-php/smarty/issues/28
- bugfix access to undefined config variable like {#undef#} did fail https://github.com/smarty-php/smarty/issues/29 - bugfix access to undefined config variable like {#undef#} did fail https://github.com/smarty-php/smarty/issues/29
- bugfix in nested {foreach} saved item attributes got overwritten https://github.com/smarty-php/smarty/issues/33
===== 3.1.23 ===== (12.05.2015) ===== 3.1.23 ===== (12.05.2015)
12.05.2015 12.05.2015

View File

@@ -111,7 +111,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* smarty version * smarty version
*/ */
const SMARTY_VERSION = '3.1.24-dev/1'; const SMARTY_VERSION = '3.1.24-dev/2';
/** /**
* define variable scopes * define variable scopes

View File

@@ -208,7 +208,8 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase
} }
} }
} }
$output .= "\$foreachItemSav = \$_smarty_tpl->tpl_vars[$item];\n"; $itemName = trim($item,"'\"");
$output .= "\$foreach_{$itemName}_Sav = \$_smarty_tpl->tpl_vars[$item];\n";
$output .= "?>"; $output .= "?>";
return $output; return $output;
@@ -239,8 +240,9 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
list($openTag, $nocache, $item, $key, $foo) = $this->closeTag($compiler, array('foreach')); list($openTag, $nocache, $item, $key, $foo) = $this->closeTag($compiler, array('foreach'));
$this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $item, $key, false)); $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $item, $key, false));
$itemName = trim($item,"'\"");
$output = "<?php\n"; $output = "<?php\n";
$output .= "\$_smarty_tpl->tpl_vars[$item] = \$foreachItemSav;\n"; $output .= "\$_smarty_tpl->tpl_vars[$item] = \$foreach_{$itemName}_Sav;\n";
$output .= "}\n"; $output .= "}\n";
$output .= "if (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>"; $output .= "if (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>";
return $output; return $output;
@@ -274,9 +276,10 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
} }
list($openTag, $compiler->nocache, $item, $key, $restore) = $this->closeTag($compiler, array('foreach', 'foreachelse')); list($openTag, $compiler->nocache, $item, $key, $restore) = $this->closeTag($compiler, array('foreach', 'foreachelse'));
$itemName = trim($item,"'\"");
$output = "<?php\n"; $output = "<?php\n";
if ($restore) { if ($restore) {
$output .= "\$_smarty_tpl->tpl_vars[$item] = \$foreachItemSav;\n"; $output .= "\$_smarty_tpl->tpl_vars[$item] = \$foreach_{$itemName}_Sav;\n";
} }
$output .= "}\n?>"; $output .= "}\n?>";