我有一个实体
class Icon
{
...
/**
* @var array $padding
*
* @ORM\Column(name="padding", type="array")
*/
private $padding;
/**
* Set padding
*
* @param array $padding
* @return Icon
*/
public function setPadding($padding)
{
$this->padding = $padding;
return $this;
}
/**
* Get padding
*
* @return array
*/
public function getPadding()
{
return $this->padding;
}
...
}
,图标表单
<?php
namespace Acme\ExBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class IconPaddingType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('padding', new PaddingType())
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\ExBundle\Entity\Icon'
));
}
public function getName()
{
return 'icontype';
}
}
和填充表格
<?php
namespace Acme\ExBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class PaddingType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('top', 'integer', array('data' => 0))
->add('right', 'integer', array('data' => 0))
->add('bottom', 'integer', array('data' => 0))
->add('left', 'integer', array('data' => 0))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
}
public function getName()
{
return 'paddingtype';
}
}
如果我使用IconType
并填充填充,图标按照我的预期保存。
但在此之后我再次编辑图标时,
PaddingForm
不使用icon.padding
值
填充表单(顶部,左侧,右侧,底部再次为“0”)。
如何使用PaddingForm
值填充icon.padding
?
答案 0 :(得分:1)
我认为data
会覆盖构造表单时传递的数据。
我建议您将实体中的0
值设置为默认值(直接在属性中或在__construct
中)并从表单中删除data
属性。
class IconPadding{
....
public function __construct(){
$this->left = $this->rigth = $this->bottom = $this->top = 0;
}
...
}