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:
- generieren eines Standard-random-code in den controller und dann an der Ansicht oder
- 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 einerandom('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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code generiert eine 10-Zeichen-Passwort in base64 (von A bis Z im unteren und Großbuchstaben, 0 bis 9, Bindestrich und Unterstrich). Dies macht es auch url-freundlich. Sie können ändern Sie die Parameter nach Ihren wünschen, wenn Sie möchten.
Einverstanden mit @Fluffy, die Sie nicht tun sollten es in twig : Ihr Gutschein-code ein-Daten, die bearbeitet werden, werden in php, es muss erzeugt werden, in php.
Aber ich habe einen use-case zur Erzeugung eines unique-id direkt in der Vorlage : wenn nur der Vorlage betroffen ist.
Ich habe ein Formular mit ein. Ich brauche eine id auf meine Eingaben, aber nur zu finden, Sie von innen die gleiche Vorlage, in die "for" - Attribut des label.
Als es war erzeugt in einer Schleife, ging ich mit einem einfachen :