Symfony 3.4: NumberType и MoneyType отображают ввод текста типа html вместо ввода числового типа - PullRequest
0 голосов
/ 13 мая 2018

Я работаю с Symfony 3.4, и у меня возникает проблема с полем формы NumberType, которое отображает текстовый ввод:

ElementArrivageType.php:

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

Twig:

{{ 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 голосов
/ 14 мая 2018

На основе документации Symfony:

Визуализирует текстовое поле ввода и специализируется на вводе номера обработки.

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

Так что этохорошо, если у вас есть текстовый ввод.Symfony при отправке проверит, является ли это число, а не строка

...