Как использовать переменные переменные в Smarty? - PullRequest
0 голосов
/ 25 июня 2018

Я хочу использовать переменные переменные в smarty.Я знаю, что мы можем использовать его в PHP .Но я не могу найти какой-либо способ добиться того же в файле шаблона Smarty.Рассмотрим следующий сценарий.

У меня есть несколько переменных, которые я передаю из файла PHP в файл Smarty TPL.Все эти имена переменных имеют схожий характер.например, $test_1, $test_2, $test_3 и т. д.

Вот как на самом деле я пытаюсь этого добиться.Здесь $COUNTER представляет 1, 2, 3 ....

 {$SELECTED_VALUE = "test_{$COUNTER}"}
 {$$SELECTED_VALUE|@print_r}

Но когда я пытаюсь распечатать его, он выдает ошибку

Syntax Error in template "test.tpl" on line 127 "{$$SELECTED_VALUE|@print_r}" - Unexpected "$", expected one of: "{" , "identifier"

Теперь в PHPЯ могу получить значения этих переменных, используя двойные символы $$.Но я не могу найти какой-либо способ добиться того же в смарт-файл TPL.

Я просмотрел эти ссылки, но ничего не понял из этого.

Переменная переменная в шаблонах Smarty

Динамикапеременные в smarty в цикле

Пожалуйста, помогите мне здесь, если это возможно.

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Хорошо, похоже, я нашел решение.Как я уже упоминал выше, у меня есть эти динамически созданные и назначенные $test_1, $test_2, $test_3, .... в файл smarty tpl.Чтобы использовать эти переменные динамически, я выбрал следующий подход.

{for $counter=1 to $total}
      {$test_{$counter}}
 {/for}

Спасибо за помощь.

0 голосов
/ 05 октября 2018

Это должно сделать то, что вы ищете:

{$x = ['foo', 'bar']}
{${$x}|print_r}
0 голосов
/ 25 июня 2018

вы можете написать цикл в вашем файле tpl ниже. Например, допустим, $ count = 10;

     {for $foo=1 to $count}
          <li>{$foo}</li>
     {/for}
...