在Smarty3中将$index附加到字符串的末尾


Append $index to the end of the string in Smarty3

我有以下HTML代码:

<input type="text"
       name="line_item[hotel_info][{{$index}}][second_last_name_{{$index}}]"
       value="{{$PREVIOUS_REQUEST.hotel_info.$index.second_last_name_$index}}"
>

$index附加到传递给值的字符串的正确方法是什么?这个$PREVIOUS_REQUEST.hotel_info.$index.second_last_name_$index失败了,因为Smarty不喜欢字符串末尾的_$index。任何帮助吗?

UPDATE: using cat:

我试过使用cat修饰符,但仍然不起作用:

{{$PREVIOUS_REQUEST.hotel_info.$index.hotel_name_|cat:$index}}

返回0,这是$index的值,但我需要的值存储在var。

看起来您需要使用一个中间变量:

{assign "sln" "second_last_name_$index"}
value="{{$PREVIOUS_REQUEST.hotel_info.$index.$sln}}"

的例子:

$PREVIOUS_REQUEST = [ 'hotel_info' => [
    0 => [ 'second_last_name_0' => 'foo' ],
    1 => [ 'second_last_name_1' => 'bar' ],
]];
$smarty = new 'Smarty;
$smarty->assign('PREVIOUS_REQUEST', $PREVIOUS_REQUEST);
$smarty->assign('index', 0);
$smarty->display(<<<'EOTPL'
string:
{assign "sln" "second_last_name_$index"}
index="{{$index}}"
index="{{$sln}}"
value="{{$PREVIOUS_REQUEST.hotel_info.$index.$sln}}"
EOTPL
);

输出:

index="0"
index="second_last_name_0"
value="foo"