【问题标题】:Typo3 - fluid - for each newsItem.uidTypo3 - 流体 - 对于每个 newsItem.uid
【发布时间】:2013-06-20 17:48:36
【问题描述】:

我正在使用 Typo3 6.0 和新闻系统 2.0。 我有一个使用流体视图助手的自定义模板,我根据它们的类别显示来自我的数据库的新闻。 到目前为止一切顺利,没问题。

我的问题是我想遍历所有新闻记录(在表 tx_news_domain_model_news 中),这样我就可以使用条件过滤显示哪些新闻记录,但到目前为止,我的尝试似乎是徒劳的。

为什么可以像这样循环遍历新闻类别:

<f:for each="{newsItem.categories}" as="category">
     <f:if condition="{category.uid} == 9">
           {category.title} #this is displayed correctly.
     </f:if>
</f:for>

但是当我尝试遍历 newsItem.uid 时,它不起作用?

<f:for each="{newsItem.uid}" as="pub">
        <f:if condition="{pub} == 5">
             {pub.title}
        </f:if>
</f:for>

感谢您的宝贵时间。

【问题讨论】:

  • 一条新闻只有一个uid,你为什么要循环遍历它呢?此外,您想通过这一切实现什么目标?
  • @Shufla 好吧,我正在尝试使用自定义字段进行循环,这是一个数字,因此我可以将其与另一个进行比较。似乎我无法循环使用我的自定义字段,它只是不起作用,所以我正在尝试使用 uid 的另一种方式,认为我可以使用它来访问我的自定义字段,但我想我不完全理解带有新闻的 ForViewHelper... 我能做什么?

标签: loops for-loop typo3 fluid tx-news


【解决方案1】:

你把事情搞砸了(实际上@Shufla 已经说过了)。

所有语言的

for each 语句都允许您迭代 某种集合。在这种情况下,每个newsItem 都可以连接一些categories,因此您可以为每个项目迭代其类别(即对象)。在伪代码中类似于:

<f:for each="[cat1,cat2,cat3]" as="currentObject">
    {currentObject.property}
</f:for>

TYPO3 中的 UID 始终是一个整数并且是唯一的,因此无法遍历它,因为伪代码看起来像这样(必须失败):

<f:for each="1" as="currentObject">
    {currentObject.property}
</f:for>

我不知道新闻的观点,但我只是假设这会起作用:

<f:for each="{news}" as="pub">
        <f:if condition="{pub.uid} == 5">
             {pub.title}
        </f:if>
</f:for>

但是请确保您不再执行 - 嵌套迭代,也许您在默认视图的迭代中已经拥有了您所需要的一切?

编辑

如您所见,newsItem 从 News/List.html 视图(在文件夹 Templates 中)的迭代中传递给 List/Item 部分,因此您无法在部分中重复此迭代,因为您只有一个新闻可用的对象。

如果您想要/需要进行一些条件迭代,请在视图中执行:/typo3conf/ext/news/Resources/Private/Templates/News/List.html

【讨论】:

  • 感谢您的回答。显然我有点搞砸了。无论如何,我不明白的是你刚刚发布的内容: { pub.title} 应该可以正常工作吗?但就我而言,它不起作用,而且我的 tx_news_domain_model_news 表中确实有一个 uid 为 5 的新闻。到目前为止,它仅在我尝试遍历类别时才有效。你知道为什么吗 ?如果我想循环访问我的新闻记录,我还能做什么?
  • 我已经过滤了新闻我想显示我试图在模板中循环新闻的原因,如下所示: settings
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 2013-08-31
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多