2012-11-27 80 views
2

我有一個使用symfony2和doctrine2的表單繼承問題。 這裏是東西:Symfony 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。要創建我的手藝我已經做了我的形式是這樣的:

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'字段返回爲一個數組而不是一個實體。 DId我錯過了什麼?如何從字段user生成我的用戶對象。我不想創建對象mays設置所有屬性是最好的方法。

也許我錯了。

感謝,

+0

在視圖級別,每個數據類型呈現爲簡單的字符串或數組。在模型級別,您應該能夠在綁定表單後獲取對象。你在哪個級別嘗試獲取值? –

+0

我想在驗證我的表單後在我的控制器中執行此操作。 – FernCoder

回答

0

在你的控制器:

$form->getData()->getUser(); 
+0

我已經這樣做了,但'getUser()'返回一個包含我所有用戶表單域的數組,我想要的是實體。似乎沒有其他選項從陣列中填充實體... – FernCoder

+0

您是否綁定了表單? $ form-> bind($ request); 在$ form-> getData() - > getUser();之前執行此操作。 – Lighthart