У меня проблема с формой 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;
}
}