我尝试将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>
答案 0 :(得分:2)
您无法使用viewhelper返回数组,因为viewhelper始终返回字符串。
但是,您可以向当前渲染上下文引入一个新变量,然后在viewhelper中使用此变量。
public function render() {
$returnArray = array('a' => 17, 'b' => 42);
$this->templateVariableContainer->add('returnArray', $returnArray);
$output = $this->renderChildren();
$this->templateVariableContainer->remove('returnArray');
return $output;
}
在模板中,您可以在{returnArray}
上运行for循环。
答案 1 :(得分:0)
在Fluid模板中尝试f:for
和f:cycle
的组合。请参阅Fluid ViewHelper参考中的f:cycle examples。