Как предотвратить округление чисел в Sonata-admin? - PullRequest
1 голос
/ 29 марта 2019

Доброе утро всем. Я изучаю разработку, и у меня есть проблема с моим первым проектом symfony4.

Это винный магазин. Моя цель - позволить виноградарю добавлять данные о продуктах в базу данных через интерфейс Sonata-admin, а затем отображать эти данные на веб-странице магазина. Этот процесс работает правильно.

У меня есть объект с именем «Product», связанный с Sonata-admin с различными переменными. Один - это цена продукта («prix»), а другой - объем в литрах («contenance»). Они напечатаны как «плавать». На странице «ProductAdmin», где создается форма, показанная в бэк-офисе, они имеют тип «Moneytype» и «NumberType».

Моя проблема: в форме «Добавить продукт» в интерфейсе Sonata-admin, когда виноградарь вводит цену и объем, эти числа всегда будут округляться до целых чисел (после того, как он отправил форму) ... И записаны в этом формате в базу данных ... и представлены в этом формате на веб-странице.

Я попытался добавить параметр 'scale' в 'formMapper'. Это на самом деле работает ... пока я не проверю форму в Sonata-admin!

Я пытался изменить тип переменной Entity на «десятичный», чтобы добавить опции «точность» и «масштаб» ... напрасно.

в продукте:

 /**
     * @ORM\Column(type="decimal", precision=3, scale=2)
     */
    private $contenance;

    /**
     * @ORM\Column(type="decimal", precision=3, scale=2)
     */
    private $prix;

в Product Admin

<?php

namespace App\Admin;

use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;

final class ProduitAdmin extends AbstractAdmin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('titre', TextType::class);
        $formMapper->add('millesime', TextType::class);
        $formMapper->add('cepage', TextType::class);
        $formMapper->add('appellation', TextType::class);
        $formMapper->add('description', TextType::class);
        $formMapper->add('contenance', NumberType::class, ['scale' => 3]);
        $formMapper->add('prix', MoneyType::class, ['scale' => 3]);
        $formMapper->add('classe', TextType::class);
    }

Поскольку ни один из этих советов не сработал, и поскольку этап округления происходит в интерфейсе Sonata-admin, я думаю, что причиной проблемы является часть Sonata-admin. Я исследовал реперториум «вендора», но не нашел ничего о «типах» или «округлении» ...

Есть идеи, как это решить?

Заранее спасибо ...

Thomas

1 Ответ

0 голосов
/ 12 апреля 2019

ОТВЕТ:

Ну, SonataAdmin просто подготовить числа для базы данных ... которые не могут содержать числа с плавающей запятой / десятичные числа !!!

Итак ... все нормально.

Я просто разделил свои числа на 100, прежде чем рендерить их ... Вроде бы нормальный путь.

...