检查变量是否为流体中的数组类型

时间:2016-07-18 11:03:02

标签: typo3 fluid

是否可以在流体中检查变量的类型是否为数组?我搜索这样的东西。

<f:if condition='{myvar.Type == "Array"}'></f:if>

或者我是否必须为此创建自己的ViewHelper?

2 个答案:

答案 0 :(得分:5)

您必须创建自己的ViewHelper,或使用existing one from EXT:vhs

它的工作方式类似于f:if ViewHelper:

<v:condition.type.isArray value="{myvar}">
    <f:then>
        ...
    </f:then>
    <f:else>
        ...
    </f:else>
</v:condition.type.isArray>

答案 1 :(得分:2)

我通过编写自己的ViewHelper

解决了这个问题
class TestViewHelper extends AbstractViewHelper 
{
    /**
    * Arguments Initialization
    */
    public function initializeArguments()
    {
        $this->registerArgument('myvar', 'string', 'test', TRUE);
    }

    /**
    * @return integer test
    */
    public function render() 
    {

        $arg      = $this->arguments['myvar'];
        $argType  = gettype($arg);
​
        if (preg_match("/array/i", "$argType")) {
            return 1;    //match
        } else {
            return 0;    //No match
        }
    }
}

<强>用法:

{namespace mynamespace=YOUR_EXTENSION_NAME\YOUR_VENDOR_NAME\ViewHelpers}

<f:if condition="<mynamespace:isarray myvar='{_all}'/>==1">
    <f:then>
        <strong>_all is an Array</strong><br>
    </f:then>
    <f:else>
        <strong>_all is not an Array</strong><br>
    </f:else>
</f:if>