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