Шаблон ExpressionEngine не будет выводить пустой массив JSON - PullRequest
0 голосов
/ 13 января 2012

Я создаю JSON в шаблоне ExpressionEngine и указываю библиотеке Ruby JSON на соответствующий URL. Шаблон выглядит так:

[
{exp:mylib:mytag channel="mychannel" backspace="1"}
  {"entry_id":"{entry_id}","title":"{title}"},
{/exp:mylib:mytag}
]

Когда тег возвращает данные, все в порядке, мой код Ruby отлично работает с массивом объектов. Однако, когда тег не возвращает данных (поскольку нет подходящих записей), Ruby жалуется, что длина строки json не равна 2 октетам. Я ожидаю, что результат будет [], то есть пустой, но допустимый массив JSON. Однако посещение URL-адреса в Firefox / firebug и wget подтверждает, что ответ, возвращаемый с URL-адреса, имеет нулевую длину, со статусом 200 OK.

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

Является ли пара пустых квадратных скобок каким-то образом зарезервированным токеном в языке шаблонов EE? Происходит ли какая-то умная оптимизация, которая предполагает, что никто никогда не захочет получить пару квадратных скобок на html-странице?

1 Ответ

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

Вы разрабатываете свое собственное дополнение или используете встроенные теги ExpressionEngine?

Используя запросы записей собственного канала, вы можете использовать условный тег if_no_results для управления тем, чтовыводится, когда нет подходящих результатов:

{exp:channel:entries channel="channel_name"}
    {if no_results} ...{/if}
{/exp:channel:entries}

Многие сторонние надстройки также поддерживают условный тип {if_no_results}.

Вы также можете взглянуть настороннее ExpressionEngine JSON дополнение, которое может дать вам некоторое представление о том, как подходить к вашей ситуации.

...