我在我的扩展程序中创建了一个过滤器,我需要从扩展中的表条目下拉(在我的示例中为colors表)。我试过这个:
<select class="option-set clearfix form-control" data-filter-group="farben">
<option value="*" data-filter-value="" class="selected">Alle Farben</option>
<f:for each="{steines}" as="steine">
<option value="#filter-farben-{steine.farbe.name}" data-filter-value=".{steine.farbe.name}">{steine.farbe.name}</option>
</f:for>
</select>
问题在于,条目将显示多个。例如:
但它应该是:
有什么想法吗?
谢谢你的帮助!
答案 0 :(得分:1)
为什么要手动创建选择和所有选项? TYPO3 Fluid有一个select ViewHelper,它会使用所有给定选项呈现一个选择字段吗?
您应该将所有可用的颜色传递给您的视图(例如$this->view->assign('colors', $this->colorRepository->findAll());
。然后使用选择ViewHelper中的颜色。
<f:form.select property="yourProperty" options="{colors}" prependOptionValue="*" prependOptionLabel="Alle Farben" />
答案 1 :(得分:0)
就像你可以看到我和derhansen
小讨论一样,问题出在你的收藏中。
如果您将传递集合:红色,蓝色,蓝色,蓝色,黄色,黄色,那么您的循环将显示集合中的每个位置。选择viewhelper
也是如此你应该创建一个单独的颜色分开的集合,并且每个颜色只有一个实例。你可以使用循环或使用viewhelper
例如,您可以使用简单的GROUP BY
创建对数据库的简单查询(如果您将此信息存储在db中)。其他解决方案是在控制器中进行迭代
$tmpCollection = array();
foreach($collection as $color) {
if(!in_array($color, $tmpCollection) {
$tmpCollection[] = $color;
}
}
可以将$tmpCollection
传递给查看,它只包含一个颜色实例。当然这只是伪代码,但你会感觉到解决方案:)