簡體   English   中英

TYPO3:如何在自己的擴展中創建下拉列表

[英]TYPO3: How to create a Dropdown in own Extension

我在擴展程序中創建了一個過濾器,並且需要擴展程序中一個表的條目的下拉列表(在我的示例中為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>

因此,問題在於條目將顯示為多個。 例如:

  • 紅色
  • 綠色
  • 藍色
  • 紅色
  • 藍色
  • 藍色等

但是應該是:

  • 紅色
  • 綠色
  • 藍色

有任何想法嗎?

謝謝您的幫助!

為什么要手動創建選擇和所有選項? TYPO3 Fluid有一個Select ViewHelper ,它可以渲染具有所有給定選項的選擇字段?

您應該將所有可用的顏色傳遞給視圖(例如$this->view->assign('colors', $this->colorRepository->findAll());然后在選擇ViewHelper中使用這些顏色。

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

就像您可以看到我和derhansen小討論一樣,問題出在您的收藏derhansen中。

如果您要傳遞集合:紅色,藍色,藍色,藍色,黃色,黃色,則循環將顯示集合中的每個位置。 選擇viewhelper也是一樣

您應該做的是創建一個單獨的集合,將顏色分組,每種顏色只有一個實例。 比您可以使用循環或viewhelper

例如,您可以使用簡單的GROUP BY創建對數據庫的簡單查詢(如果此信息存儲在db中)。 其他解決方案是在控制器中迭代

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

則可以通過$tmpCollection進行查看,並且它僅包含一個顏色實例。 當然,這只是偽代碼,但您會感覺到解決方案的感覺:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM