如何在树枝中设置if子句?
How to set if clause in twig?
我有这两个功能:
function is_expired($object) {
if (new DateTime('NOW') > $object) {
return true;
} else {
return false;
}
}
function is_not_started($object) {
if (new DateTime('NOW') < $object) {
return false;
} else {
return true;
}
}
$object 是从数据库中获取的 Datetime 对象。并且我还将函数注册为树枝过滤器。
投票系统我有两个字段start_date和expiry_date,我想看看这个是不是已经过期了,但是已经开始了。
在树枝中我有:
{% if (category.endVote|is_expired == false) or (category.startVote|is_not_started == true) %}
<td><a href="voting.php?id={{ category.id }}">{{ category.categoryName|e }}</a></td>
{% else %}
<td>{{ category.categoryName|e }}</td>
{% endif %}
我的意思是,只有在启动且未过期时,我才希望看到 categoryName 为 link。但它没有按预期工作。我在 if 子句中做错了什么?
这是我推荐的。
function can_vote($object) {
$now = new \DateTime('now');
return $object->getEndVote() < $now && $object->getStartVote() > $now;
}
{% if category|can_vote is same as(true) %}
<td><a href="voting.php?id={{ category.id }}">{{ category.categoryName|e }}</a></td>
{% else %}
<td>{{ category.categoryName|e }}</td>
{% endif %}
不要使用两个单独的函数,而是将它们合并为一个并传入整个类别对象。同样在树枝部分,我建议使用更严格的等式而不是“==”,我的代码中等同于“===”。
记下 getEndVote() 和 getStartVote() getter 方法,如果您使用 public 属性,请更改它们以反映正确的名称。
如果您最终希望使用两种不同的方法,提取该功能并不困难,但我认为这是一个更好的解决方案。
我有这两个功能:
function is_expired($object) {
if (new DateTime('NOW') > $object) {
return true;
} else {
return false;
}
}
function is_not_started($object) {
if (new DateTime('NOW') < $object) {
return false;
} else {
return true;
}
}
$object 是从数据库中获取的 Datetime 对象。并且我还将函数注册为树枝过滤器。
投票系统我有两个字段start_date和expiry_date,我想看看这个是不是已经过期了,但是已经开始了。
在树枝中我有:
{% if (category.endVote|is_expired == false) or (category.startVote|is_not_started == true) %}
<td><a href="voting.php?id={{ category.id }}">{{ category.categoryName|e }}</a></td>
{% else %}
<td>{{ category.categoryName|e }}</td>
{% endif %}
我的意思是,只有在启动且未过期时,我才希望看到 categoryName 为 link。但它没有按预期工作。我在 if 子句中做错了什么?
这是我推荐的。
function can_vote($object) {
$now = new \DateTime('now');
return $object->getEndVote() < $now && $object->getStartVote() > $now;
}
{% if category|can_vote is same as(true) %}
<td><a href="voting.php?id={{ category.id }}">{{ category.categoryName|e }}</a></td>
{% else %}
<td>{{ category.categoryName|e }}</td>
{% endif %}
不要使用两个单独的函数,而是将它们合并为一个并传入整个类别对象。同样在树枝部分,我建议使用更严格的等式而不是“==”,我的代码中等同于“===”。 记下 getEndVote() 和 getStartVote() getter 方法,如果您使用 public 属性,请更改它们以反映正确的名称。
如果您最终希望使用两种不同的方法,提取该功能并不困难,但我认为这是一个更好的解决方案。