Доброе утро всем. Я изучаю разработку, и у меня есть проблема с моим первым проектом 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