So erzeugen Sie eine zufällige Zeichenfolge, die mit Twig?

Habe ich einen Eingang, der hat den code für einen Gutschein. Benutzer können füllen Sie benutzerdefinierten code, aber ich würde gerne, um Ihnen ein Standard-code. Ich habe den folgenden code jetzt:

<input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}">

Und ich möchte Sie ersetzen RANDOM_CODE durch eine zufällige Zeichenfolge.

Glaube ich nicht, dass ist relevant für die Frage, aber form.code enthält den original-Gutschein-code. Ich verwende das gleiche Formular für die Bearbeitung.

Laut Zweig docs, ist es möglich, Zufallszahlen mit random() oder sogar ein random char aus einem string mit random('abcdefgh...'), aber ich würde gerne generiert einen zufälligen string mit einer bestimmten Länge.

Ich weiß, dass ich tun kann, dass es mindestens zwei Ansätze:

  1. generieren eines Standard-random-code in den controller und dann an der Ansicht oder
  2. erstellen-ein Zweig der Erweiterung mit einer Funktion zum erzeugen der zufälligen Zeichenfolge für mich.

Wissen, dass ich bin neugierig, ob es ist ein Weg, um eine zufällige Zeichenfolge generiert, die nur mithilfe von Twig ' s built-in Funktionen.

  • Ich denke, es ist möglich, erstellen von Variablen mit Zweig. Sie könnten zufällig mehrere Zeichen, mit einer Schleife durch Erstellung einer einzigen zufälligen Charakter jeder Zeit und Anhängen. Würde das funktionieren?
  • ja. Und ich sagte, dass in meiner Frage.
  • es scheint, dass es funktionieren wird. Ich könnte mit einem for Schleife ermöglicht eine Reichweite, wie {% for i in 0..10 %} erstellen Sie eine Zeichenfolge mit 10 Zeichen Länge, zum Beispiel. Aber mit diesem Ansatz werde ich brauchen, um hinzuzufügen eine random('abcdefghi...') innerhalb der Schleife. Ich dachte an etwas kompakter, aber ich bin mir fast sicher, dass es nicht möglich ist.
  • Klingt wie Sie haben einen plan!
  • Ich mache das ziemlich oft einfach durch Anhängen einer Zufallszahl, um ein Präfix. E. g.: {% set code='prefix-' ~ random() %}. Tun Länge, indem Sie eine Reihe. 10 Zeichen? 'prefix' ist 7, also 3 mehr... random([100..999]) - Zufallszahl mit 3 Ziffern.
Schreibe einen Kommentar