2014-11-03 79 views
2

我的目標是在用戶信息中心等構成,顯示一個社交網絡的形式:實體場形狀的Symfony2

- Facebook : <input> 
- Twitter : <input> 
- Linkedin : <input> 

社交網絡是動態的(通過管理面板來管理)。 我目前有3個實體(社交,UserSocial和用戶(FOS ...))。 在用戶的實體,我只是增加了它:

/** 
    *@ORM\OneToMany(targetEntity="Application\SocialBundle\Entity\UserSocial", mappedBy="user") 
    */ 
    private $userSocials; 

我的社會實體:

class Social 
{ 
    /** 
    * @var integer 
    */ 
    private $id; 

    /** 
    * @var string 
    */ 
    private $name; 

    /** 
    * @var string 
    */ 
    private $class; 

    ... 
} 

我UserSocial實體:

class UserSocial 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 


    /** 
    *@ORM\ManyToOne(targetEntity="Admin\UserBundle\Entity\User", inversedBy="userSocials") 
    */ 
    private $user; 

    /** 
    *@ORM\ManyToMany(targetEntity="Admin\SocialBundle\Entity\Social", inversedBy="userSocials") 
    */ 
    private $social; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="value", type="string", length=255) 
    */ 
    // Not really sure about it 
    private $value; 
    .... 

最後,UserSocialType,這就是我」 m卡住:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('social', 'entity', array(
     'class' => 'Admin\SocialBundle\Entity\Social', 
     'property' => 'name', 
     'required' => false, 
     )) 
     ->add('value') 
    ; 
} 

它給了我一個選擇,其中包含所有社交名稱和數值輸入。我想爲DB中的每個社交實體輸入一個值。 非常感謝您的幫助。

回答

0

可能你有點不同嗎? 一個瞭解創建SocialType:

$builder 
     ->add('social', 'text', array(
      'data' => $existingSocial 
     )) 
     ... 
    ; 

UserSocialType:

$builder 
    ->add('social', new SocialType(), array(
     // pass social to the Social type 
     ... 
    )) 
    ... 
; 

PS //以上只是我的總體思路,這裏有一些錯誤路線我片斷,你不應該傳遞一個對象文本字段,但你可以使用數據變換器從文本值中獲取對象。另外我認爲你的UserSocial實體配置不當,$social字段應該會收到manyToOne關係