Arrays “第三类退货”;数组";流淌

Arrays “第三类退货”;数组";流淌,arrays,typo3,fluid,viewhelper,typo3-7.x,Arrays,Typo3,Fluid,Viewhelper,Typo3 7.x,我尝试将Viewhelper中的数组传递给Fluidtemplate。 它总是显示字符串“Array”。如果我尝试在f:for eachviewhelper中使用它作为参数,我会得到一个异常,因为它是一个字符串而不是数组。 我以前用过Typo3 6.2,现在我用了Typo3 7,它停止工作了 public function render($uids) { // $uids='901,902,903' $uidArray = explode(',', $uids); $objec

我尝试将Viewhelper中的数组传递给Fluidtemplate。 它总是显示字符串“Array”。如果我尝试在
f:for each
viewhelper中使用它作为参数,我会得到一个异常,因为它是一个字符串而不是数组。 我以前用过Typo3 6.2,现在我用了Typo3 7,它停止工作了

public function render($uids) { // $uids='901,902,903'
    $uidArray = explode(',', $uids);

    $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
    $repository = $objectManager->get('XXX\\X\\Domain\\Repository\\FooRepository');
    $query = $repository->createQuery();
    $query->getQuerySettings()->setRespectStoragePage(FALSE);
    $query->matching(
        $query->in('uid', $uidArray)
    );
    return $query->execute()->toArray();
}
这是我的流体模板:

{namespace vh=My/Namespace/ViewHelpers}
<f:for each="{vh:GetArray(uids: '901,902,903')}">...</f:for>
{namespace vh=My/namespace/ViewHelpers}
...

在流体模板中尝试组合使用
f:for
f:cycle
。请参见流体ViewHelper参考中的。

您不能使用ViewHelper返回数组,因为ViewHelper始终返回字符串

但是,可以将新变量引入当前渲染上下文,然后在viewhelper中使用此变量

公共函数render(){
$returnArray=array('a'=>17,'b'=>42);
$this->templateVariableContainer->add('returnArray',$returnArray);
$output=$this->renderChildren();
$this->templateVariableContainer->remove('returnArray');
返回$output;
}

在模板内部,您可以在
{returnArray}

上运行for循环,但这不起作用,因为我无法使用需要数组作为参数的viewhelper。我的viewhelper的返回值是一个字符串而不是数组。如果将viewhelper传递给调试viewhelper,会得到什么?类似这样的:“数组”字符串(5)表示数组在被viewhelper返回之前已经被强制转换为字符串。确切地说,我不明白为什么-这是我的问题此方法有效,谢谢!只是不明白他们为什么要这样改变。可以将阵列直接返回到流体中