В шаблонах PHP я могу использовать php-функции, например:
foreach ($users as $user){ echo someFunction($user->getName()); }
Как я могу сделать это в TWIG?
{% for user in users %} * {{ user.name }} {% else %} No user have been found. {% endfor %}
Как мне это достичь?
Вам нужны функции или фильтры . Вы можете легко добавить их, используя примеры.
// $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's raining, cats and dogs.").0 | raw }}
это выведет «Дождь». По умолчанию возвращаемые значения экранируются в Twig.
Twig_SimpleFunction – предпочтительный класс для использования. Все другие связанные с функциональностью классы в Twig устарели с 1.12 (для удаления в 2.0).
В контроллере Symfony2:
$twig = $this->get('twig');
Существует уже расширение Twig, которое позволяет вам вызывать функции PHP из ваших шаблонов Twig, например:
Hi, I am unique: {{ uniqid() }}. And {{ floor(7.7) }} is floor of 7.7.
См. Официальный репозиторий .
Если вы работаете в symfony 2, это также должно помочь. Концепция такая же, но вы помещаете код в другое место и отформатируете ее несколько иначе.
http://symfony.com/doc/2.0/cookbook/templating/twig_extension.html