如何在TYPO3 Fluid

时间:2015-10-01 18:54:38

标签: html typo3 fluid

在我的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"

因此,只有第一个不得显示。

我希望有人可以帮助我,谢谢你。

2 个答案:

答案 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>