TYPO3:如何在自己的扩展中创建下拉菜单

TYPO3: How to create a Dropdown in own Extension

我正在我的扩展程序中创建一个过滤器,我需要从扩展程序中 table 的条目中选择一个下拉菜单(在我的示例中是颜色 table)。我试过这个:

<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>

这里的问题是条目将显示多个。例如:

但应该是:

有什么想法吗?

谢谢你的帮助!

为什么要手动创建 select 和所有选项? TYPO3 Fluid 有一个 select ViewHelper 可以呈现一个 select-field with all given options?

您应该将所有可用颜色传递给您的视图(例如 $this->view->assign('colors', $this->colorRepository->findAll());。然后使用 select ViewHelper 中的颜色。

<f:form.select property="yourProperty" options="{colors}" prependOptionValue="*" prependOptionLabel="Alle Farben" />

你可以看到我和 derhansen 的小讨论,问题出在你的 collection。

如果您将传入 collection:红色、蓝色、蓝色、蓝色、黄色、黄色,那么您的循环将显示 collection 中的每个位置。 select viewhelper

也是一样

您应该创建一个单独的 collection 来对颜色进行分组,并且每种颜色只有一个实例。比你可以用你的循环或 viewhelper

例如,您可以使用简单的 GROUP BY 创建一个简单的数据库查询(如果您将此信息存储在数据库中)。其他解决方案是在控制器中迭代

$tmpCollection = array();
foreach($collection as $color) {
    if(!in_array($color, $tmpCollection) {
        $tmpCollection[] = $color;
    }
}

您可以通过 $tmpCollection 进行查看,它只会包含一个颜色实例。当然,这只是伪代码,但您会感觉到解决方案:)