DevGang
Авторизоваться

JSON из файла в twig 

Возникла задача из файла json получить в твиг без php манипуляций. Задачка как оказалось не настолько и сложная, но подумать немного пришлось. 

В Twig есть замечательная функция source, с помощью которой можно получить содержимое файла. 

Допустим, у нас есть файлик config.json со следующим содержанием:

{
    "name": "Tom",
    "last_name": "Sawyer"
}

Далее в нашем twig файле пишем следующее:

{% set source %}
    {% verbatim %}
        {% set list = %source% %}
        Name - {{ list.name }}
Last name - {{ list.last_name }} {% endverbatim %} {% endset %} {{ include(template_from_string( source|replace({ '%source%' : source('scripts.json') }) )) }}

Вот эта странная конструкция include(template_from_string( ... )) строку парсит как твиг шаблон. С ее помощью можно очень много интересного сделать, но об этом потом. set … endset это присвоение переменной блока кода, если кто не нашел в документации. verbatim … endverbatim запрещает обработку содержимого, что позволяет нам описать шаблон.

Ну и далее дело за малым, описываем логику в блоке заменяем %source% на наше json и интерпретируем строку как шаблон. В результате получаем следующее:

Name - TomLast 
Last name - Sawyer
#twig
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу