2014-11-03 78 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关系