Typo3 流体循环特性
Typo3 Fluid Loop Through Properties
我有一个工作流体模板文件,如下所示:
<table class="my-extension" >
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment.translator" />
</td>
<td>
{appointment.translator}
</td>
</tr>
<tr>
<td>
<f:translate key="my-extension_model_appointment.bringtranslator" />
</td>
<td>
{appointment.bringtranslator}
</td>
</tr>
</table>
在我的模型中,我得到了具有两个属性 translator
和 bringtranslator
.
的 class appointment
我想遍历所有属性,因此如果我添加另一个属性,我不需要更改 html 文件中的任何内容。
所以我正在寻找这样的东西:
<f:for each="{appointmentproperty}" as="property">
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment."+property />
</td>
<td>
{appointment.property}
</td>
</tr>
</f:for>
谁能告诉我如何用液体做这个? (顺便说一句。我还在使用旧的 4.7.7 版本)
<f:for each="{appointments}" as="appointment">
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment."{appointment.translator.uid} />
</td>
<td>
{appointment.bringtranslator}
</td>
</tr>
</f:for>
如果你的约会对象还有其他对象,你可以在你的迭代中再次迭代它们:
<f:for each="{appointments}" as="appointment">
{appointment.title}
<f:for each="{appointment.translators}" as="translator">
{translator.name}
</f:for>
</f:for>
您不能开箱即用。但是,如果您在流体 ({model.property}
) 中访问模型的 属性,则在后台调用 getProperty()
方法。
因此,如果您想要一些在模型增长时自动扩展视图的神奇功能,则必须实现它。
我会给你一个例子,但还有其他方法可以做到这一点:你可以在你的模型中添加一个方法:
/**
* @return array
*/
public function getPropertiesForTableView() {
return array(
'property1' => $this->getProperty1(),
'property2' => $this->getProperty2()
);
}
在您看来,您现在可以访问这个新的 Getter 方法:
<f:for each="{appointment.propertiesForTableView}" as="propertyValue" key='propertyName'>
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment.{propertyName}" />
</td>
<td>
{propertyValue}
</td>
</tr>
</f:for>
如果添加应显示在视图中的 属性(将 属性 添加到数组),您仍然需要 "do" 一些东西。但是你不需要调整你的模板。
我想你搜索的是这样的东西:
这里可以看到,可以给别名一个数组,然后就可以循环了。或许你可以由此得出答案?如果您找到正确的方法,请发表评论。
<f:alias map="{employees: {0: {first_name: 'Stefan', city: 'Lindlar'},1: {first_name: 'Petra', city: 'Lindlar'},2: {first_name: 'Sascha', city: 'Remscheid'},3: {first_name: 'Patrick', city: 'Bonn'},4: {first_name: 'Sven', city: 'Gummersbach'},5: {first_name: 'Andrea', city: 'Wuppertal'}}}">
<table cellpadding="5" cellspacing="0" border="2">
<f:groupedFor each="{employees}" as="employeesByCity" groupBy="city" groupKey="city">
<tr>
<th colspan="2">{city}</th>
</tr>
<f:for each="{employeesByCity}" as="employee">
<tr>
<td>{employee.first_name}</td>
<td>{employee.city}</td>
</tr>
</f:for>
</f:groupedFor>
</table>
</f:alias>
我有一个工作流体模板文件,如下所示:
<table class="my-extension" >
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment.translator" />
</td>
<td>
{appointment.translator}
</td>
</tr>
<tr>
<td>
<f:translate key="my-extension_model_appointment.bringtranslator" />
</td>
<td>
{appointment.bringtranslator}
</td>
</tr>
</table>
在我的模型中,我得到了具有两个属性 translator
和 bringtranslator
.
appointment
我想遍历所有属性,因此如果我添加另一个属性,我不需要更改 html 文件中的任何内容。 所以我正在寻找这样的东西:
<f:for each="{appointmentproperty}" as="property">
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment."+property />
</td>
<td>
{appointment.property}
</td>
</tr>
</f:for>
谁能告诉我如何用液体做这个? (顺便说一句。我还在使用旧的 4.7.7 版本)
<f:for each="{appointments}" as="appointment">
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment."{appointment.translator.uid} />
</td>
<td>
{appointment.bringtranslator}
</td>
</tr>
</f:for>
如果你的约会对象还有其他对象,你可以在你的迭代中再次迭代它们:
<f:for each="{appointments}" as="appointment">
{appointment.title}
<f:for each="{appointment.translators}" as="translator">
{translator.name}
</f:for>
</f:for>
您不能开箱即用。但是,如果您在流体 ({model.property}
) 中访问模型的 属性,则在后台调用 getProperty()
方法。
因此,如果您想要一些在模型增长时自动扩展视图的神奇功能,则必须实现它。
我会给你一个例子,但还有其他方法可以做到这一点:你可以在你的模型中添加一个方法:
/**
* @return array
*/
public function getPropertiesForTableView() {
return array(
'property1' => $this->getProperty1(),
'property2' => $this->getProperty2()
);
}
在您看来,您现在可以访问这个新的 Getter 方法:
<f:for each="{appointment.propertiesForTableView}" as="propertyValue" key='propertyName'>
<tr>
<td>
<f:translate key="my-extension_domain_model_appointment.{propertyName}" />
</td>
<td>
{propertyValue}
</td>
</tr>
</f:for>
如果添加应显示在视图中的 属性(将 属性 添加到数组),您仍然需要 "do" 一些东西。但是你不需要调整你的模板。
我想你搜索的是这样的东西:
这里可以看到,可以给别名一个数组,然后就可以循环了。或许你可以由此得出答案?如果您找到正确的方法,请发表评论。
<f:alias map="{employees: {0: {first_name: 'Stefan', city: 'Lindlar'},1: {first_name: 'Petra', city: 'Lindlar'},2: {first_name: 'Sascha', city: 'Remscheid'},3: {first_name: 'Patrick', city: 'Bonn'},4: {first_name: 'Sven', city: 'Gummersbach'},5: {first_name: 'Andrea', city: 'Wuppertal'}}}">
<table cellpadding="5" cellspacing="0" border="2">
<f:groupedFor each="{employees}" as="employeesByCity" groupBy="city" groupKey="city">
<tr>
<th colspan="2">{city}</th>
</tr>
<f:for each="{employeesByCity}" as="employee">
<tr>
<td>{employee.first_name}</td>
<td>{employee.city}</td>
</tr>
</f:for>
</f:groupedFor>
</table>
</f:alias>