Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 检查变量在流体中是否为数组类型_Typo3_Fluid - Fatal编程技术网

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

Typo3 检查变量在流体中是否为数组类型,typo3,fluid,Typo3,Fluid,是否可以在流体中检查变量的类型是否为数组?我在寻找这样的东西 <f:if condition='{myvar.Type == "Array"}'></f:if> 或者我必须为此创建自己的ViewHelper吗?您必须创建自己的ViewHelper,或者使用 它的工作原理类似于f:ifViewHelper: <v:condition.type.isArray value="{myvar}"> <f:then> ...

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

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


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

您必须创建自己的ViewHelper,或者使用

它的工作原理类似于
f:if
ViewHelper:

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

...
...

我通过编写自己的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>
{namespace mynamespace=YOUR_EXTENSION_NAME\YOUR_VENDOR_NAME\ViewHelpers}
\u all是一个数组
\u all不是一个数组

然后我必须编写自己的viewhelper我想,如果我尝试安装扩展名“VHS:Fluid Viewhelpers”,我会得到“您的php版本高于允许的版本”您使用的是哪一版本的TYPO3?您使用的是哪一版本的TYPO3?如果是6.2.x,你不应该使用PHP7(它正式兼容PHP5.3.7到5.6),如果是7.6.x,VHS应该在支持PHP7.0.x的版本3.0.0中提供。对不起,有一些小问题,这让评论增加了一倍。我使用的是Typo3 7.6.9,谢谢我将搜索v3!用例是什么?这样的逻辑不属于模板。在将变量传递给我的partial之前,我需要检查变量是否为array类型。您可以使用
return is_array($this->arguments['myvar'),无需在此处执行正则表达式魔术。