簡體   English   中英

實體字段形式Symfony2

[英]Entity field form Symfony2

我的目標是在用戶儀表板中顯示一個社交網絡表單,例如:

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

社交網絡是動態的(由管理面板進行管理)。 我目前有3個實體(社交,用戶社交和用戶(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,這就是我遇到的問題:

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

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

可能您會有所不同嗎? 提示社交類型:

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

UserSocialType:

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

PS //這些只是我的一般想法,這是我的摘要中的一些錯誤之處,您不應將對象傳遞給文本字段,但可以使用數據轉換器從文本值中獲取對象。.另外,我認為您的UserSocial實體配置不正確, $social字段應收到manyToOne關系

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM