Twig:while-workaround
Twig: while-workaround
我已经有了解决方案,但仅适用于 JavaScript。不幸的是,Twig 中不存在 while 循环。
我在 JavaScript 中的 Twig-目标:
var x = 10; // this is an unknown number
var result = x;
while (100 % result !== 0) {
result++;
}
console.log(result);
知道我如何在 Twig 中执行此操作吗?
我的目标是什么:(不重要,如果你已经明白了)
我想得到未知号码后的第一个号码,满足以下条件:
100 除以(第一个数字)等于整数。
编辑:我无权访问 PHP 和 Twig-core。
您可以像这样制作 Twig 扩展:
namespace Acme\DemoBundle\Twig\Extension;
class NumberExtension extends \Twig_Extension
{
public function nextNumber($x)
{
$result = $x;
while (100 % $result !== 0) {
$result++;
}
return $result;
}
public function getFunctions()
{
return array(
'nextNumber' => new \Twig_Function_Method($this, 'nextNumber'),
);
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'demo_number';
}
}
并在包的 service.xml 中定义它:
<service id="twig.extension.acme.demo" class="Acme\DemoBundle\Twig\Extension\NumberExtension" >
<tag name="twig.extension" />
</service>
然后在模板中使用:
{{ nextNumber(10) }}
更新
一种(不太好)但可能满足您需要的方法是做这样的事情:
{% set number = 10 %}
{% set max = number+10000 %} {# if you can define a limit #}
{% set result = -1 %}
{% for i in number..max %}
{% if 100 % i == 0 and result < 0 %} {# the exit condition #}
{% set result = i %}
{% endif %}
{% endfor %}
<h1>{{ result }}</h1>
希望对您有所帮助
在我的例子中 - 我必须输出一个具有相似子对象的对象 - 包括一个带有预定义值的模板并设置一个正常的 if-condition 工作。
有关详细信息,请参阅 http://twig.sensiolabs.org/doc/tags/include.html。
我已经有了解决方案,但仅适用于 JavaScript。不幸的是,Twig 中不存在 while 循环。
我在 JavaScript 中的 Twig-目标:
var x = 10; // this is an unknown number
var result = x;
while (100 % result !== 0) {
result++;
}
console.log(result);
知道我如何在 Twig 中执行此操作吗?
我的目标是什么:(不重要,如果你已经明白了)
我想得到未知号码后的第一个号码,满足以下条件:
100 除以(第一个数字)等于整数。
编辑:我无权访问 PHP 和 Twig-core。
您可以像这样制作 Twig 扩展:
namespace Acme\DemoBundle\Twig\Extension;
class NumberExtension extends \Twig_Extension
{
public function nextNumber($x)
{
$result = $x;
while (100 % $result !== 0) {
$result++;
}
return $result;
}
public function getFunctions()
{
return array(
'nextNumber' => new \Twig_Function_Method($this, 'nextNumber'),
);
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'demo_number';
}
}
并在包的 service.xml 中定义它:
<service id="twig.extension.acme.demo" class="Acme\DemoBundle\Twig\Extension\NumberExtension" >
<tag name="twig.extension" />
</service>
然后在模板中使用:
{{ nextNumber(10) }}
更新
一种(不太好)但可能满足您需要的方法是做这样的事情:
{% set number = 10 %}
{% set max = number+10000 %} {# if you can define a limit #}
{% set result = -1 %}
{% for i in number..max %}
{% if 100 % i == 0 and result < 0 %} {# the exit condition #}
{% set result = i %}
{% endif %}
{% endfor %}
<h1>{{ result }}</h1>
希望对您有所帮助
在我的例子中 - 我必须输出一个具有相似子对象的对象 - 包括一个带有预定义值的模板并设置一个正常的 if-condition 工作。
有关详细信息,请参阅 http://twig.sensiolabs.org/doc/tags/include.html。