2

我遇到了使用 symfony2 和教义 2 进行表单继承的问题。事情是这样的:

我有一个users没有什么特别的实体,只有几个字段,名称、电子邮件等......

Ferncoder\Devis\UserBundle\Entity\users:
  type: entity
  table: null
  fields:
    id:
      type: integer
      id: true
      unsigned: true
      nullable: false
      generator:
        strategy: AUTO
    name:
      type: string
      length: '45'
      nullable: false

我有一个实体craftsMans,这个表与实体有 OneToOne 关系users

Ferncoder\Devis\UserBundle\Entity\craftsMan:
  type: entity
  oneToOne:
    user:
      targetEntity: users
      joinColumn:
        name: user_id
        referencedColumnName: id
  table: null
  fields:
    id:
      type: integer
      id: true
      unsigned: true
      nullable: false
      generator:
        strategy: AUTO

我已经生成了 2 个表单类usersTypecraftsmanType. 为了创建我的 craftsMan 我已经完成了这样的表格:

class craftsManType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('user', new usersType())
            ->add('company', 'text')
            ->add('fieldOfActivities', 'text')
            ->add('legalForm', 'text')
            ->add('siret', 'text')
            ->add('website', 'text')
            ->add('description', 'textarea')
            ->add('services', 'textarea')
            ->add('employee', 'text')
            ->add('phone', 'text')
        ;
    }

在我想获取字段值之前,我的表单看起来很酷。问题是我的'user'字段是作为数组而不是作为实体返回的。我错过了什么吗?如何从该字段生成我的用户对象user。我不觉得创建对象可能设置所有属性是最好的方法。

也许我错了。

谢谢,

4

2 回答 2

1

您必须设置 data_class 选项以返回对象而不是数组。下面的文档解释了当表单嵌入到另一个表单中时,有必要使用 data_class。

文档:http ://symfony.com/doc/current/book/forms.html#book-forms-data-class

于 2013-02-14T15:05:44.887 回答
0

在您的控制器中:

$form->getData()->getUser();
于 2012-11-28T00:55:56.173 回答