Изменение массива в включенном файле в Smarty

Вопрос:

main.tpl:

{$array=['first']}
{include file="sub.tpl"}
{var_dump($array)}

sub.tpl:

{$array[]='second'}
{var_dump($array)}

Отдыхает в:

array (size=2)
0 => string 'first' (length=5)
1 => string 'second' (length=6)
array (size=1)
0 => string 'first' (length=5)

Как передать $array по ссылке, так что 'second' также находится в $array после завершения include?

Лучший ответ:

Есть решение, но вы должны действительно переосмыслить использование Smarty. Smarty следует использовать только для отображения данных, и на самом деле вам иногда нужно создавать временные переменные, а создание/добавление к массиву, похоже, не так.

Вы всегда должны, если это возможно, готовить данные для отображения на PHP и в Smarty simple, вы должны отображать их без сложных вычислений и присвоения.

В вашем случае вам нужно использовать scope чтобы вы могли использовать:

{$array[]='second' scope='global'}

с global охватом, как указано выше, или с указанием parent.

Однако, как я уже сказал, вполне возможно, что вы можете сделать это лучше на PHP.

Оцените статью
TechArks.Ru
Добавить комментарий