即使这篇文章很旧,给定的答案也被接受,但不是该问题的答案。它只是处理主要问题的另一个机会。
问题是如何使用动态变量...
对于给定的样本,它应该类似于
PHP
$content_name = 'body';
$title = 'hello ';
$body = 'world';
$smarty->assign('content_name',$content_name);
$smarty->assign($content_name.'_title',$title);
$smarty->assign($content_name.'_body',$body);
聪明的
{$content_name} //body
{${$content_name}_title} //hello
{${$content_name}_body} //world
{${$content_name}_title}{${$content_name}_body} my {$content_name} is awesome
//hello world my body is awesome
这是使用它的动态方式。即使在这种情况下它不是最好的方法:)
如果你有某种对象或多维数组......并且你喜欢迭代它们,你必须关心整个字符串而不仅仅是数字......
例如:
PHP
$arr = [
"attr1" => "hello ",
"attr2" => "world ",
"attr3" => "my body is awesome"
];
$smarty->assign('foobar', $arr);
聪明的
{for $i=1 to 3}
{$foobar.{"attr$i"}} //works (whole name must be string var mix)
//{$foobar.attr{"$i"}} //fails
//{$foobar.attr{$i}} //fails
{/for}
但是{$foobar{$i}}
在一个简单的数组上使用会起作用。
对于所有需要它的人,请尽情享受。