在 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());
});
}
throw new \RuntimeException(sprintf('Function %s not found', $name));
});
在twig模板中:{{ explode(",", "It's raining, cats and dogs.").0 | raw }}
这将输出 "It's raining"。Twig默认会转义返回的值。
Twig_SimpleFunction是首选的类。自1.12以来,Twig中的所有其他与函数相关的类都已弃用(将在2.0中删除)。
在Symfony2控制器中:
$twig = $this->get('twig');
已经有一个Twig扩展可以让你在Twig模板中调用PHP函数,例如:
Hi, I am unique: {{ uniqid() }}.
And {{ floor(7.7) }} is floor of 7.7.
http://symfony.com/doc/2.0/cookbook/templating/twig_extension.html