流体访问for循环中的其他数组

时间:2015-08-23 09:23:36

标签: typo3 fluid extbase

我必须使用以下数组:

$business = array(0 => 'Car', 1 => 'IT');
$counts   = array(0 => 15, 1 => 33);

我在流体模板中分配了两个数组,并遍历数组业务。

<f:for each="{business}" as="b" key="key">
    <li>
        <f:link.action action="business" arguments="{current_business: b.uid}">
            <f:if condition="{counts.key} > 0">
                <f:then>
                    {b.title} {counts.key}
                </f:then>
                <f:else>
                    {b.title}
                </f:else>
             </f:if>
        </f:link.action>
    </li>
</f:for>

我没有获得{counts.key}的输出,我应该以另一种方式访问​​它吗?

2 个答案:

答案 0 :(得分:4)

可以使用扩展程序v:variable.get-ViewHelper中的vhs来完成此操作。而不是{counts.key}使用

{v:variable.get(name: 'counts.{key}')}

<v:variable.get name="counts.{key}"/>.

答案 1 :(得分:3)

当然你可以像Jost通过操纵视图中的数据来表现它,它完全有效,另一方面可能将控制器中的数组组合成关联数组会更舒服,就像:

$business = array(
    0 => array('title' => 'Car', 'count' => '15'),
    1 => array('title' => 'IT', 'count' => '33'),
);

查看

<f:for each="{business}" as="b">
    <li>
        <f:link.action action="business" arguments="{current_business: b.uid}">
            <f:if condition="{b.count} > 0">
                <f:then>
                    {b.title} ({b.count})
                </f:then>
                <f:else>
                    {b.title} (no items)
                </f:else>
             </f:if>
        </f:link.action>
    </li>
</f:for>

注意:如果在实际情况下是模型对象的集合,您只需将transient - count字段添加到模型中 - 无需TCA和SQL声明 - 在这种情况下,您将能够在飞行中设定价值&#34;&#34;在控制器中的此字段上,将它们用作视图中的通用模型字段,但它们不会保存到数据库中。