Symfony 3.4:NumberType& MoneyType正在渲染文本类型html输入而不是数字类型输入

时间:2018-05-13 16:09:01

标签: symfony symfony-forms symfony-3.4

我正在使用Symfony 3.4,我遇到了NumberType Form Field的问题,它正在呈现文本输入:

ElementArrivageType.php:

->add('prixUnit', NumberType::class, array(
  'scale' => 3,
  'attr' => array(
    "min" => 0,
    "scale" => 3,
    "step" => 0.001,
    "placeholder" => "0.000",
  )
))

嫩枝:

{{ form_widget(form.prixUnit, {'attr': {'class': 'form-control'}}) }}

结果F12:

<input type="text" id="appbundle_arrivage_elementArrivages_2_prixUnit" name="appbundle_arrivage[elementArrivages][2][prixUnit]" required="required" min="0" scale="3" step="0.001" placeholder="0.000" class="form-control prixUnit" value="500.011">

在记录时,我找到了一个对我不起作用的解决方案:

Twig:

{% block number_widget %}
    <div class="number_widget">
        {% set type = type|default('number') %}
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

{{ form_start(form) }}
{{ form_row(form) }}
{{ form_end(form) }}

我找到的唯一解决方案是一个不干净的解决方案:

//forcing type when loading DOM:
$('#appbundle_arrivage_elementArrivages_2_prixUnit').prop('type', 'number');

有没有人有干净的解决方案?

1 个答案:

答案 0 :(得分:0)

基于Symfony的文档:

  

呈现输入文本字段,专门处理数字输入。

https://symfony.com/doc/3.4/reference/forms/types/number.html

如果您有文字输入,那就没问题了。 Symfony在提交时会检查它是否是数字而不是字符串