Symfony3: как вызвать пользовательскую функцию твига в шаблоне ветки? [Дубликат]

>>> str(datetime.timedelta(hours=10.56))
10:33:36

>>> td = datetime.timedelta(hours=10.505) # any timedelta object
>>> ':'.join(str(td).split(':')[:2])
10:30

Передача объекта timedelta в функцию str() вызывает тот же используемый код форматирования, если мы просто наберем print td. Поскольку вы не хотите секунд, мы можем разделить строку на двоеточия (3 части) и вернуть их вместе только с первыми двумя частями.

0
задан KADlancer 20 June 2018 в 19:39
поделиться

1 ответ

Чтобы решить эту проблему, вам сначала нужно включить расширение Twig_Extension_StringLoader. Это дает вам доступ к функции template_from_string , которая дает вам возможность «создавать» шаблоны внутри twig и (re) включить требуемую строчную интерполяцию.

$twig->addExtension(new Twig_Extension_StringLoader());

использовать template_from_string для достижения желаемого эффекта

{% set legalLink = 'Datenschutzbedingungen' %}
{{ include(template_from_string('{{ "'~contact.legal~'" }}')) }}
1
ответ дан DarkBee 16 August 2018 в 11:09
поделиться
  • 1
    Спасибо за комментарий. Я дам, что попытка как можно скорее – KADlancer 26 June 2018 в 16:07
  • 2
    Я тестировал это в обычном проекте, но для моей лаборатории шаблонов я, похоже, не нашел место для проперы, чтобы зарегистрировать расширение. Любые идеи по этой теме? @DarkBee – KADlancer 26 June 2018 в 16:25
  • 3
    Если вы найдете этот файл , вы сможете – DarkBee 26 June 2018 в 17:47
  • 4
    У меня еще не установлен плагин расширения twig. Я просто запустил «композитор», требующий шаблонов-lab / plugin-twig-extensions & quot; и я тестирую, все ли работает, как и ожидалось. Операции с пакетами: 17 устанавливает , что довольно много для одного плагина. – KADlancer 26 June 2018 в 20:44
  • 5
    Вам просто нужно найти экземпляр twig, чтобы зарегистрировать один – DarkBee 27 June 2018 в 09:55
Другие вопросы по тегам:

Похожие вопросы: