Использовать функцию PHP в TWIG? - PullRequest
15 голосов
/ 18 ноября 2011

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

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

Как мне сделать это в TWIG?

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

Как мне этого добиться?

Ответы [ 4 ]

14 голосов
/ 18 ноября 2011

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

10 голосов
/ 27 ноября 2013
// $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());
        });
    }
    throw new \RuntimeException(sprintf('Function %s not found', $name));
});

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

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

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

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

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

$twig = $this->get('twig');
1 голос
/ 10 декабря 2014

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

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

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

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

0 голосов
/ 22 января 2013

Если вы работаете в Symfony 2, это также должно помочь.Концепция та же, но вы помещаете код в другое место и форматируете его немного по-другому.

http://symfony.com/doc/2.0/cookbook/templating/twig_extension.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...