HTML :: Шаблон Perl - PullRequest
       2

HTML :: Шаблон Perl

1 голос
/ 16 января 2012

Есть ли пакет, похожий на HTml :: Template в perl, который берет объект JSON и отображает его в файл шаблона HTML?Я создаю веб-приложение с использованием HTML :: Template и получу JSOn от API веб-сервисов, все будет просто, если я смогу шаблонизировать этот JSOn в HTML вместо того, чтобы делать это точно так, как этого требует HTML :: Template.

Ответы [ 3 ]

6 голосов
/ 16 января 2012

HTML :: Template просто принимает структуру данных, состоящую из строк, хэшей и массивов.JSON отображается прямо на это.

$template->param(myData => JSON::Any->new->decode($json_string));
1 голос
/ 30 мая 2012

хорошо, немного поздно, но: HTML :: Template всегда хочет хэш массивов хэшей и так далее.и вы не можете перемещаться по параметру stash.Если вы хотите сделать это, вы можете попробовать HTML :: Template :: Compiled, который позволяет вам сделать это.

<tmpl_var some_hash.key.another_key[23] >

или с альтернативными разделителями:

[%= some_hash.key.another_key[23] %]

, но обратите вниманиедокументированные отличия модуля от HTML :: Template.

Таким образом, вы декодируете свою строку JSON в структуру данных и передаете ее в шаблон, а затем получаете доступ ко всем значениям где-то глубоко в структуре.

1 голос
/ 16 января 2012

HTML::Template - довольно «простой» шаблонизатор - я использую кавычки, потому что его простота позволяет вам делать все, что вам нужно, в части view из архитектуры Model View Controller.

Однако вы не можете выполнить произвольный код perl внутри HTML::Template.

Кроме того, из-за того, что в JSON у вас могут быть очень сложные структуры данных, я сомневаюсь, что есть какие-либо подходящие способы прямого использования JSON в ваших шаблонах.

Единственное решение, которое я считаю возможным, - это использовать Perl-скрипт, который будет анализировать JSON, создавать некоторые «объекты» и передавать их в ваши шаблоны. У вас уже есть этот Perl-скрипт - тот, который создает экземпляр вашего HTML::Template объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...