1

我尝试将 Viewhelper 中的数组传递给 Fluidtemplate。它总是显示字符串“Array”。如果我尝试将它用作f:for eachviewhelper 中的参数,我会得到一个异常,因为它是一个字符串而不是一个数组。我以前用过 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>
4

2 回答 2

3

您不能使用 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;
}

然后,在您的模板中,您可以运行 for 循环{returnArray}

于 2016-05-08T11:40:22.123 回答
0

在您的流体模板中尝试f:for和的组合。f:cycle请参阅 Fluid ViewHelper Reference 中的f:cycle 示例

于 2016-05-06T22:22:30.870 回答