首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Typo3流体环的性质

Typo3流体环的性质
EN

Stack Overflow用户
提问于 2015-07-01 15:37:30
回答 3查看 1.2K关注 0票数 0

我有一个工作流体模板文件,如下所示:

代码语言:javascript
运行
复制
<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,它有两个属性translatorbringtranslator

我想遍历所有的属性,所以如果我再添加一个属性,我就不需要修改html文件中的任何内容了。所以我在寻找这样的东西:

代码语言:javascript
运行
复制
<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版本)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-05 12:21:01

你不能当机立断地这么做。但是,如果您在流体({model.property})中访问模型的一个属性,则在遮罩下调用getProperty()方法。

因此,如果您想要一些神奇的功能,如果您的模型增长自动扩展您的视图,您必须实现它。

我将给出一个例子,但是有其他方法可以这样做:您可以向模型中添加一个方法:

代码语言:javascript
运行
复制
/**
 * @return array
 */
public function getPropertiesForTableView() {
    return array(
        'property1' => $this->getProperty1(),
        'property2' => $this->getProperty2()
    );
}

在您的视图中,现在可以访问这个新的Getter方法:

代码语言:javascript
运行
复制
<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
EN

Stack Overflow用户

发布于 2015-07-02 17:14:52

代码语言:javascript
运行
复制
<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>

如果约会对象也有其他对象,则可以在迭代中再次迭代它们:

代码语言:javascript
运行
复制
<f:for each="{appointments}" as="appointment">
{appointment.title}
<f:for each="{appointment.translators}" as="translator">
{translator.name}
 </f:for>
</f:for>
票数 0
EN

Stack Overflow用户

发布于 2018-01-15 09:13:32

我认为你在寻找这样的东西:

Typo3 Extbase指南

在这里您可以看到,您可以给别名一个数组,然后您可以循环通过。也许你能通过这个找到答案?如果你找到了正确的方法,请评论。

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31165827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档