«Это значение недопустимо» при сохранении запятого числа в сонате - PullRequest
0 голосов
/ 03 июля 2019

Я занимаюсь разработкой CMS с использованием Sonata и Symfony 3.

Я использовал библиотеку JavaScript AutoNumeric, чтобы числовое поле содержало запятые, чтобы сделать приложение более удобным для пользователя.

Проблема в том, что теперь, когда я пытаюсь сохранить запись, сервер помечает поле сообщением «это значение недопустимо». Вот аннотация, которую я использую на поле:

/**
 * @var float
 *
 * @ORM\Column(name="amount", type="decimal", scale=2, precision=12, nullable=true)
 * @Assert\NotNull(message = "validator.not_blank")
 * @Assert\Range(
 *      min = 0,
 *      max = 9999999999
 * )
 */

Есть ли способ сказать моему серверному валидатору вычеркнуть запятые перед проверкой?

===

Редактировать # 1: Это поле использует NumberType в качестве своего типа. Вот соответствующий код администратора:

        ->add(
            'amount',
            NumberType::class,
            array(
                'label' => 'list.label.salary.amount',
                'scale'=> 2,
                'required' => true,
                'attr' => array(
                    "class" => "compensation-number",
                ),
            )
        )

Мой JavaScript создает новый экземпляр AutoNumeric с полем формы в качестве входного элемента.

Редактировать # 2: Другими словами, это поле обрабатывается как строка в браузере, и мне нужно преобразовать это значение в число с плавающей точкой, прежде чем оно будет сохранено в базе данных. Я не уверен, как лучше это сделать.

1 Ответ

0 голосов
/ 04 июля 2019

В итоге я продублировал поле в своем шаблоне Twig, а затем использовал JavaScript, чтобы скрыть «реальный» ввод. Затем слушатель JavaScript обновил «реальное» значение с помощью очищенной версии отформатированного числа, видимого пользователям. Это решило мою проблему.

...