Использовать функцию PHP в TWIG?

В PHP-шаблонах я могу использовать php-функции, например:

foreach ($users as $user){
  echo someFunction($user->getName());
}

Как я могу сделать это в TWIG?

{% for user in users %}
    * {{ user.name }}
{% else %}
    No user have been found.
{% endfor %}

Как мне это достичь?

Ответы

Ответ 1

Вам нужны functions или filters. Вы можете легко добавить их, используя примеры.

Ответ 2

// $twig is a Twig_Environment instance.

$twig->registerUndefinedFunctionCallback(function($name) {
    if (function_exists($name)) {
        return new Twig_SimpleFunction($name, function() use($name) {
            return call_user_func_array($name, func_get_args());
        });
        return false;
    }
});

В шаблоне ветки:

{{ explode(",", "It raining, cats and dogs.").0 | raw }}

это выведет "Дождь". По умолчанию возвращаемые значения сбрасываются в Twig.

Twig_SimpleFunction - предпочтительный класс для использования. Все другие связанные с функциональностью классы в Twig устарели с 1.12 (для удаления в 2.0).

В контроллере Symfony2:

$twig = $this->get('twig');

Ответ 3

Существует уже расширение Twig, которое позволяет вам вызывать функции PHP из ваших шаблонов Twig, например:

Hi, I am unique: {{ uniqid() }}.

And {{ floor(7.7) }} is floor of 7.7.

См. официальный репозиторий расширений.