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')代码>,无需在此处执行正则表达式魔术。