TYPO3使用流体中ViewHelper的数据

时间:2016-09-02 10:55:18

标签: typo3 fluid viewhelper

如何在流体模板中使用来自自定义ViewHelper的数据。

我制作了一个返回数据的自定义ViewHelper:

{cars: {
0: {car:'VW Golf V TDi 140 GT Sport DSG Van',price:'144900'},
1: {car:'Citroën C5 HDi Elegance',price:'168900'},
2: {car:'Seat Leon TSi Stylance',price:'173000'}
}}

并尝试了下面的代码,但它不会在f:for循环中打印任何内容。 在FLuid中,我想通过f:for循环来完成此操作。 但是如何将我的数据转换为f:for语法?

<f:alias map="<car:CarInfo length="5" />">
  <table cellpadding="5" cellspacing="0" border="2">
    <f:for each="{cars}" as="car">
      <tr>
        <td>{car.car}</td>
        <td>{car.price}</td>
      </tr>
    </f:for>
  </table>
</f:alias>

2 个答案:

答案 0 :(得分:1)

您的<f:alias代码已损坏。您需要使用内联注释,因为您想要访问另一个viewhelper中的viewhelper https://wiki.typo3.org/Fluid_Inline_Notation

<f:alias map="{cars: '{car:CarInfo(length:\'5\')}'}">

你是否还包括这样的命名空间?

{namespace car=Vendor\Extension\ViewHelpers}

答案 1 :(得分:0)

您的ViewHelper是返回数组还是JSON字符串?如果这是一个JSON字符串,则不能使用第三方ViewHelper或JSONVariableProvider(Fluid standalone和TYPO3v8 +)来消耗它的变量。

请参阅:Parse an existing JSON string in fluid template?

如果您的ViewHelper确实返回了一个数组,那么解决您的用例的最有效方法是:

<f:for each="{car:carInfo(length: 5)}" as="car">...</f:for>