2014-11-03 6 views
2

Моя цель состоит в том, чтобы показать социальную форму сетей в панели управления пользователями, как:Entity поле формы Symfony2

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

Социальные сети являются динамическими (управление с помощью панели управления). У меня есть 3 объекта (Social, UserSocial и User (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') 
    ; 
} 

Это дало мне только выбор со всем социальным именем в БД и ввод значения. Я хотел бы ввести значение для каждого социального объекта в БД. Заранее благодарю вас за помощь.

ответ

0

Может быть, вы делаете это немного иначе? Craete SocialType:

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

UserSocialType:

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

PS // Это только мои общие мысли, вот некоторые неправильные линии мой сниппет, вы не должны передать объект в текстовое поле, но вы можете использовать трансформаторы данных, чтобы получить объект из текстового значения. Также я думаю, что ваша пользовательская сущность неадекватно сконфигурирована, поле $social должно получать много отношений Toone

Смежные вопросы