在for循环中流体访问其他数组
Fluid access other array in for loop
我必须像这样排列:
$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}
的输出,我应该通过其他方式访问它吗?
这可以使用 v:variable.get
-ViewHelper from the extension vhs
来完成。而不是 {counts.key}
使用
{v:variable.get(name: 'counts.{key}')}
或
<v:variable.get name="counts.{key}"/>.
当然你可以像 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 声明 - 在此如果您可以在控制器中的这个字段上设置值 "on the fly" 并将它们用作视图中的通用模型字段,但它们不会保存到数据库中。
我必须像这样排列:
$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}
的输出,我应该通过其他方式访问它吗?
这可以使用 v:variable.get
-ViewHelper from the extension vhs
来完成。而不是 {counts.key}
使用
{v:variable.get(name: 'counts.{key}')}
或
<v:variable.get name="counts.{key}"/>.
当然你可以像 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 声明 - 在此如果您可以在控制器中的这个字段上设置值 "on the fly" 并将它们用作视图中的通用模型字段,但它们不会保存到数据库中。