在Symfony2中设置Embed Form的数据

时间:2013-07-04 07:30:50

标签: forms symfony

我正在尝试以嵌入形式设置contact_phone和contact_postal_address类型的数据:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('phone', 'contact_phone')
            ->add('postal', 'contact_postal_address');
    }

但据我所知,在创建表单时,我只能为表单设置一个对象

$form = $this->createForm('address', $address); //address is the embed form

如何为地址类型中的每个子类型设置数据?

1 个答案:

答案 0 :(得分:0)

创建用于此表单的特定于表单的模型,例如:

class ModelForForm
{
    public $phone;

    public $postal;
}

如果您正在使用注释,也可以在此处添加任何断言,例如Valid()

然后,您可以使用您的数据填充此新模型:

$model = new ModelForForm();
$model->postal = $address;
// ...

$form = $this->createForm('address', $model);

确保您将表单类型的data_class选项更新为您在上面创建的类的名称。