The Symfony MoneyType Field renders as input type="text"
which allows a user to type whatever they want into the field.
How can I override this to render as input type="number"
so that users can only enter numeric characters?
$formBuilder->add("amount", MoneyType::class, [
'currency' => 'USD'
]);
Current output:
<div><label for="form_amount" class="required">Amount</label>$ <input type="text" id="form_amount" name="form[amount]" required="required" /></div>
What I am trying to achieve:
<div><label for="form_amount" class="required">Amount</label>$ <input type="number" id="form_amount" name="form[amount]" required="required" /></div>
I tried to simply override the attribute type, but all this did was add a second type
attribute at the end, which didn't work because it's obviously invalid HTML.
$formBuilder->add("amount", MoneyType::class, [
'attr' => [
'type' => 'number',
],
'currency' => 'USD'
]);
Here's my simple twig:
{{ form_start(form) }}
{{ form_widget(form) }}
<input type="submit" />
{{ form_end(form) }}
I'm also curious, why is this the default input type for Money? I'm considering extending or modifying the class to accommodate this, but I'm sure there's some advantage I'm not seeing.
</div>