2017-01-03 2 views
0

Ich baue eine modulare Vorlage für ein Akkordeonmenü in GravCMS.GravCMS field unique ID

Ich brauche eine generierte eindeutige Kennung für die IDs; Gibt es bereits existierendes, das ich anrufen und für den Bezeichner verwenden kann? Wenn nicht, muss ich ein zusätzliches Feld erstellen und es beim Speichern generieren?

Momentan wo ich {{pane.pane_title}} in meinem Zweig habe, brauche ich eine eindeutige ID.

Jeder Rat zur Praxis wird hier sehr geschätzt.

Meine accordion.yaml Datei sieht wie folgt aus:

title: Accordion 
@extends: default 

form: 
    fields: 
    tabs: 
     type: tabs 
     active: 1 

    fields: 
    panes: 
     type: tab 
     title: Accordion Panes 
     fields: 
     header.panes: 
      name: panes 
      type: list 
      label: Panes 

      fields: 
      .pane_title: 
       type: text 
       label: Title 
      .pane_content: 
       type: editor 
       label: Content 

Meine Datei sieht accordion.html.twig wie folgt aus:

<div class="container"> 
<div class="row"> 
    <div class="panel-group" id="accordion"> 
     {% for pane in page.header.panes %} 
      <div class="panel panel-default"> 
       <div class="panel-heading"> 
        <h4 class="panel-title"> 
         <a data-toggle="collapse" data-parent="#accordion" href="#collapse-{{ pane.pane_title }}"> 
          {{ pane.pane_title }}</a> 
        </h4> 
       </div> 
       <div id="collapse-{{ pane.pane_title }}" class="panel-collapse collapse"> 
        <div class="panel-body">{{ pane.pane_content }}</div> 
       </div> 
      </div> 
     {% endfor %} 
    </div> 
</div> 

Antwort

0

pane eine einzigartige slug hat Angenommen, Sie wäre besser dran mit der slug als pane_title, da es wahrscheinlich ist, dass Sie am Ende mit Sonderzeichen enden könnte würde sonst die Flucht erfordern.

Wenn slug nicht verfügbar ist, können Sie zufällige eindeutige Zeichenfolgen für IDs generieren:

{% for pane in page.header.panes %} 
    {% set guid = random_string(36) %} 
    ... 
    <div id="collapse-{{guid}}"...> 
    ... 
{% endfor %} 

Allerdings, wenn Sie sicherstellen müssen, dass die IDs über Seitenaufrufe konsistent bleiben (wie direkt auf spezifische Verknüpfung Wenn Sie den MD5-Hashcode für den Titel verwenden möchten, müssen Sie keine Zeichen mehr eingeben: