2016-08-29 2 views
1

У меня есть следующий 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: использованием cat:

Я попытался с помощью cat модификаторов, но до сих пор не работает:

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

Return 0 который является значением $index, но мне нужно значение, хранящееся в вар ,

+0

'{{$ PREVIOUS_REQUEST.hotel_info $ индекс. second_last_name _ {$ index}}} 'возможно, поскольку он выглядит как [переменная переменная] (http://www.smarty.net/docs/en/language.syntax.variables.tpl). – bishop

+0

@bishop не работает – ReynierPM

ответ

1

Похоже, вам нужно будет использовать промежуточную переменную:

{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" 
+0

Как вы получаете эту отладочную информацию? Используя '{{debug}}' в шаблоне? – ReynierPM

+0

Да, они просто переменные, поэтому я просто использую расширение переменной Smarty '{{$ some_variable_in_scope}}'. – bishop

+0

Я не получаю такой же результат, как вы :-(Я добавил '{{debug}}' к шаблону, но я не вижу никакой информации – ReynierPM

Смежные вопросы