我有一个工作的Fluid模板文件,如下所示:
<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>
在我的模型中,我获得了具有两个属性appointment
和translator
的课程bringtranslator
。
我想遍历所有属性,所以如果我添加另一个属性,我不需要在我的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版本)
答案 0 :(得分:1)
你无法开箱即用。但是,如果您使用流体({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>
如果添加应在视图中显示的属性(将属性添加到数组中),仍然需要“执行”某些操作。但是你不需要调整你的模板。
答案 1 :(得分:0)
<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>
答案 2 :(得分:0)
我认为你会搜索这样的东西:
在这里你可以看到,你可以给别名一个数组然后你可以循环。也许你可以通过这个得到答案?如果您找到了正确的方法,请发表评论。
<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>