Smarty эхо переменной массива с "-" в названии - PullRequest
4 голосов
/ 16 февраля 2010

У меня есть переменная, которая в PHP-контроллере выглядит как

$data['content']['mods']['HTML-FORM-END']['html']

Он хорошо передается в smarty, но когда я пытаюсь показать это любым из этих способов, он показывает либо 0 (принимает минус как оператор и выполняет некоторые математические операции), либо говорит "нераспознанный тег"

{$data.content.mods.HTML-FORM-BEGIN.html}<br /> {$data.content.mods['HTML-FORM-BEGIN']['html']}<br /> {$data.content.mods.<code>HTML-FORM-BEGIN .html}
{$data.content.mods.HTML-FORM-BEGIN.html}

Как я могу напечатать его без переименования ключа массива в контроллере?

1 Ответ

1 голос
/ 16 февраля 2010

Ваш пример ссылается на HTML-FORM-END в вашем контроллере, но на ваш взгляд это HTML-FORM-BEGIN, но я предполагаю, что это не ваша проблема, и оба существуют. Как насчет этого?

{$data[content][mods][HTML-FORM-BEGIN][html]}

Из того, что я могу найти, видно, что единственный способ попасть в многомерный массив в Smarty - это циклы. Возможно, вместо этого вы можете разбить свой массив на присваивания в контроллере, чтобы обеспечить легкий доступ:

foreach($data['content']['mods'] as $key => $values) {
  $smarty->assign('content_mods_' . $key, $values['html'];
}

и тогда вы можете ссылаться на них в своем шаблоне следующим образом:

{$content_mods_HTML-FORM-BEGIN}
{$content_mods_HTML-FORM-END}
// etc.
...