在我的TYPO3 Fluid模板中,我有一个值,我想在显示之前检查它是否为空。 我的方式现在:
<f:if condition="{myvalue}">
<div class="myclass">{myvalue}</div>
</f:if>
当我在后端键入一个像&#34; test&#34;或者&#34; 2&#34;,如果我没有输入任何内容,它就不会显示div标签。 但是当我输入后端&#34; 0&#34;时,情况也是如此。如何修复整数0将被显示,如果它的空(在数据库中为NULL)不显示? (它的常见值是0)
顺便说一句,我尝试过这样的事情:
<f:if condition="{myvalue} !=NULL">
<f:if condition="{myvalue} >= 0">
但随后还会显示空值。如果我做
<f:debug>{myvalue}</f:debug>
我得到的结论是:
myvalue = NULL
myvalue = 0
myvalue = "test"
因此,只有第一个不得显示。
我希望有人可以帮助我,谢谢你。
答案 0 :(得分:4)
首先有两个解决方案是transient
类型的bool
字段,getter只检查value是否为null,但如果value为{{1}则另外返回true
(实际上在大多数语言中0
是一个值)
第二种解决方案更具普遍性,它只是编写自定义ViewHelper,它允许您检查值是0还是有值:
0
因此,您可以稍后将此作为常见<?php
namespace VENDOR\YourExt\ViewHelpers;
class notEmptyOrIsZeroViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
/**
* @param mixed $value Value to check
*
* @return bool the rendered string
*/
public function render($value) {
return ($value === 0 || $value === '0' || $value) ? true : false;
}
}
条件的条件,例如:
<f:if >
答案 1 :(得分:0)
我有一个类似的案例,我想检查流体变量是否为 0 或正整数。简单的 >= 0
比较不起作用。在 TYPO3 10 LTS 中,我可以通过这样做来解决这个问题:
<f:if condition="{value} === 0 || {value * 1} > 0">
value is zero or positive integer
</f:if>
(注意:这也将允许整数字符串,例如“123”或“1st”,但不允许“val3” - 基本上就像您在 PHP 中将字符串转换为整数时所期望的那样。)
如果您只想检查 {value}
是否为空或不为空(但允许零作为有效值),您可以将条件简化为:
<f:if condition="{value} === 0 || {value}">
value is set and not empty
</f:if>