【问题标题】:TYPO3 Using data from ViewHelper in FluidTYPO3 在 Fluid 中使用 ViewHelper 中的数据
【发布时间】:2017-01-10 11:14:21
【问题描述】:

如何在我的流体模板中使用来自自定义 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>

【问题讨论】:

    标签: typo3 fluid viewhelper


    【解决方案1】:

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

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

    你也像这样包含你的命名空间吗?

    {namespace car=Vendor\Extension\ViewHelpers}
    

    【讨论】:

    • 是的,我确实包含了我的命名空间。如果我只是在别名标签之外写 ,我会按预期获得数据。
    • 在我的例子中映射的别名应该是cars:而不是car:
    【解决方案2】:

    您的 ViewHelper 是返回数组还是 JSON 字符串?如果这是一个 JSON 字符串,如果不使用第三方 ViewHelper 或 JSONVariableProvider(Fluid 独立和 TYPO3v8+),您将无法使用其中的变量。

    见:Parse an existing JSON string in fluid template?

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

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

    【讨论】:

    • 实际上我得到了一个错误,现在说流体需要和箭头但正在获取 af 字符串,我认为我的 ViewHelper 返回了一个字符串。
    • 如果您使用内联语法,这也可能表示语法错误。任何语法无效的表达式都将作为包含 Fluid 代码的字符串传递。这是您应该检查的第一件事,之后您可能应该确保您的 ViewHelper 确实 返回一个数组。您可以使用f:debug 来提供帮助(只需将内联部分放在f:debug 中,如果显示Fluid 代码,您就有语法错误)。
    • 我已经去掉了长度部分,因为我没有在第一步中使用它。 {car:CarInfo} 然后给我这个:'{car:CarInfo}' (13 chars)
    • 我想知道,我可以使用 v:format.json.decode json="" 吗?但是如何将我的 json URL 放入其中?
    • 您的调试语句为您提供了源代码,因为当您在 ViewHelper 标记参数之外时,Fluid 不允许以这种方式创建数组。这样做是为了减少在 Fluid 模板中编写 JSON 等内容的问题。使用&lt;f:debug&gt;{car:carInfo(length: 5)}&lt;/f:debug&gt; 进行调试。
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多