【问题标题】:In TYPO3 Fluid, how to pass additional arguments to a partial when {_all} is used在 TYPO3 Fluid 中,使用 {_all} 时如何将附加参数传递给部分
【发布时间】:2016-04-13 15:36:50
【问题描述】:

Fluid Styled Content 使用 f:render Viewhelper:

<f:render partial="Header" arguments="{_all}" />

我想向部分传递另一个信息,例如

<f:render partial="Header" arguments="{_all, settings : doThis}" />

但在我看来这是错误的方式,因为它会引发错误。

我也尝试使用f:alias 访问settings.doThis,但也没有运气(或者更确切地说,是技能)。

如何正确完成?

【问题讨论】:

    标签: typo3 fluid typo3-7.6.x


    【解决方案1】:

    这可以通过别名 ViewHelper 实现。我已经将它与 TYPO3 版本 6 和 7 一起使用。

    只需扩展 {_all} 变量如下

    部分

    <f:alias map="{additionalVar: 'foobar'}">
            <f:render partial="Partial" arguments="{_all}"/>
    </f:alias>
    

    部分

    <f:alias map="{additionalVar: 'foobar'}">
        <f:render section="Section" arguments="{_all}" />
    </f:alias>
    

    您可以像使用其他任何变量一样使用“additionalVar”变量。

    它适用于部分和部分。

    【讨论】:

      【解决方案2】:

      您不能,因此只需在控制器中修改您的settings(或任何其他变量)或使用 ViewHelper,它允许您在视图中声明变量,例如:VHS 分机的v:variable.set

      【讨论】:

      • 出于好奇,您选择了哪种解决方案?个人还是有疑问的,一般比较喜欢controller approach
      • 正如我在您的解决方案到来之前所做的那样,我只是切换了整个 Partial。当我重构它时,我会选择v:variable.set——它是普通的模板,而不是扩展,所以我没有控制器(据我所知)
      【解决方案3】:

      可以使用这个,但不要使用 var 'settings'。这个是打字稿用的。

      <f:render partial="Header" arguments="{_all, myvar:'myvalue'}" />
      

      试试 Header Partial 中的&lt;f:debug&gt; 标签看看

      【讨论】:

      • 在 TYPO3 8 中对我不起作用::参数“arguments”注册为“array”类型,但在视图助手“TYPO3Fluid\Fluid\ViewHelpers\RenderViewHelper”中属于“string”类型跨度>
      【解决方案4】:

      您可以将vhs viewhelper 与下面的流体一起使用。

      <v:variable.set value="{yourValue}" name="variable">
      <f:render partial="Header" arguments="{_all, newVar:variable}" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 2011-12-21
        • 2013-01-09
        相关资源
        最近更新 更多