richiman Posted April 9, 2012 Share Posted April 9, 2012 Hello, I have variables containing arrays that are named automatically: cate1 | cate2 | cate3 | and so on. I need to use those vars in Smarty. The problem is that I cannot get it working with the official documentation. cateX, where X is $i. {section name=catdisp start=1 loop=$cattotal+1 step=1} {assign var="i" value=$smarty.section.catdisp.index} Iteration {$i} <br /> {$cate{$i}} {/section} Iteration works, but I cannot make the script output cate0. It does not even output: "Array". Any help is greatly appreciated. Regards, Richi Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/ Share on other sites More sharing options...
scootstah Posted April 9, 2012 Share Posted April 9, 2012 It's been a while since I've used Smarty but I think this might work... {$cate.$i} Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/#findComment-1335653 Share on other sites More sharing options...
Jessica Posted April 9, 2012 Share Posted April 9, 2012 It's been a while since I've used Smarty but I think this might work... {$cate.$i} I think that would look for $cate[0], that's array syntax not concatenation. Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/#findComment-1335759 Share on other sites More sharing options...
Jessica Posted April 9, 2012 Share Posted April 9, 2012 What you wrote looks correct. Are you saying you have (for example) 4 arrays with different names, or you have one array with those 4 keys $arr['cate1'] vs $cate1 What happens if you manually write {$cate1}, does it work that way? Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/#findComment-1335761 Share on other sites More sharing options...
richiman Posted April 9, 2012 Author Share Posted April 9, 2012 Hello, Are different arrays. {$cate1} works, but as I say, there can be up to 100 arrays: $cate100, or even more. I've managed to get it working with a PHP block. I know it is not clean nor recommended, but that's the only thing I could get working in Smarty 2.x. Here's the code: {assign var="name" value="cate"} {php} $varname = $this->get_template_vars('name').$this->get_template_vars('i'); $this->assign('result', $this->get_template_vars($varname)); {/php} Then loop through result with a {section name=result loop=$result}{/section} Thanks for the help. I hope someone finds this post useful. Regards, Richi Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/#findComment-1335867 Share on other sites More sharing options...
Jessica Posted April 10, 2012 Share Posted April 10, 2012 Can you try doing the name as {$cate_{$i}}, as the manual uses ONLY examples separated by a _. I wouldn't think it would matter but I wonder if it does. From manual: $foo // normal variable $foo_{$bar} // variable name containing other variable $foo_{$x+$y} // variable name containing expressions $foo_{$bar}_buh_{$blar} // variable name with multiple segments {$foo_{$x}} // will output the variable $foo_1 if $x has a value of 1. The last one is most like yours. Link to comment https://forums.phpfreaks.com/topic/260588-smarty-variable-variables/#findComment-1336104 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.