Die Symfony MoneyType Field rendert als input type="text"
, die einem Benutzer ermöglicht, einzugeben, was sie in das Feld möchten.So überschreiben Symfony-Formular MoneyType-Eingabe als Typ = "Nummer"?
Wie kann ich dies überschreiben, um als input type="number"
zu rendern, so dass Benutzer nur numerische Zeichen eingeben können?
$formBuilder->add("amount", MoneyType::class, [
'currency' => 'USD'
]);
Stromausgang:
<div><label for="form_amount" class="required">Amount</label>$ <input type="text" id="form_amount" name="form[amount]" required="required" /></div>
Was ich zu erreichen versuchen:
<div><label for="form_amount" class="required">Amount</label>$ <input type="number" id="form_amount" name="form[amount]" required="required" /></div>
Ich habe versucht, den Attributtyp einfach zu überschreiben, aber all dies tat ein zweites type
Attribut am Ende hinzufügen, die nicht funktionierte, weil es offensichtlich HTML ungültig ist.
$formBuilder->add("amount", MoneyType::class, [
'attr' => [
'type' => 'number',
],
'currency' => 'USD'
]);
Hier ist mein einfacher Zweig:
{{ form_start(form) }}
{{ form_widget(form) }}
<input type="submit" />
{{ form_end(form) }}
ich auch neugierig bin, warum ist dies der Standardeingabetyp für Geld? Ich überlege, die Klasse zu erweitern oder zu modifizieren, um dies zu berücksichtigen, aber ich bin mir sicher, dass es einen Vorteil gibt, den ich nicht sehe.
Danke für die Antwort, aber immer noch erlaubt Leute statt nur numerische diejenigen Buchstaben einzutippen. –
Hallo, können Sie das Format der Eingabe angeben, die Sie benötigen? Dann kann ich dir eine viel bessere Antwort geben. Zum Beispiel das Format d.dd, wobei 'd' ein Dezimalwert ist. –
Zwei Dezimalstellen ist großartig, das ist die Standardeinstellung. Ich merke bei der Einreichung, wenn es eine gültige Zahl ist, dann schneidet es auf zwei Dezimalstellen, was in Ordnung ist. –