Форма Symfony3 конвертирует 0 в значение NULL - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблема с формой Symfony3.Мой ShippingType выглядит следующим образом:

    $builder
        ->add('name')
        ->add('price', TextType::class, [
            'required'   => false,
            'empty_data'  => 0
        ])
        ->add('url')
        ->add('tax', ChoiceType::class, [
            'choices' => [
                '0%' => 0,
                '5%' => 5,
                '8%' => 8,
                '23%' => 23,
            ],
        ])
        ->add('free_delivery_level')
    ;

    $builder
        ->get('price')
        ->addModelTransformer($this->priceTransformerShipping);

Проблема в том, что моя цена доставки равна 0. Symfony все еще конвертируется в значение NULL.Когда я сбрасываю данные формы, я получаю следующие результаты:

object (AppBundle \ Entity \ Shipping) # 8397 (6) {["id": protected] => NULL ["name": защищено] => string (4) "asdg" ["price": protected] => NULL ["url": защищен] => NULL ["tax": protected] => int (0) ["free_delivery_level": защищен]=> NULL}

Я также пытаюсь изменить setPrice ($ price) на это:

public function setPrice($price)
{
    if(!$price){
        $price = 0;
    }

    $this->price = $price;
}

Но это также не работает


MyКод трансформации цены:

class PriceTransformerShipping implements DataTransformerInterface
{
    public function transform($price)
    {
        if(is_null($price)){
            return 0;
        }
        $price /= 100.0;

        return number_format($price, 2, ',', '');
    }

    public function reverseTransform($value)
    {
        if(empty($value) || is_null($value)){
            return null;
        }
        $price = str_replace(',', '.', $value);

        return $price * 100;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...