0

私は実体を持っています

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

パディングを埋めると、アイコンは期待どおりに保存されます。

しかし、この後、アイコンをもう一度編集すると、

PaddingFormicon.padding値を使用しません

フォームに入力します(上、左、右、下は再び「0」です)。

埋め込みPaddingFormをどのようにicon.padding値で埋めますか?

4

1 に答える 1

1

dataこれは、フォームの作成時に渡されるデータを上書きすると思います。

0エンティティ内の値をデフォルトとして(プロパティに直接またはで)設定し、それらのプロパティをフォームから__construct削除することをお勧めします。data

class IconPadding{
    ....
    public function __construct(){
        $this->left = $this->rigth = $this->bottom = $this->top = 0;
    }
    ...
}
于 2012-12-12T22:29:50.983 に答える