如何使用表单生成器将抽象列表显示为复选框,并从实体初始化列表?(Symfony2)

如何使用表单生成器将抽象列表显示为复选框,并从实体初始化列表?(Symfony2),symfony,entity,formbuilder,multiple-choice,Symfony,Entity,Formbuilder,Multiple Choice,我有一个带有用户字段的表单。我想显示语言列表中的复选框。选中的语言必须保存到数据库中 所以我有两个实体类:User和UserSiteLanguage。请参见下面的ORM和实体类。 “fos_user_user”表不包含任何语言的实字段。“user\u site\u language”是一个表,它包含一个将选定语言绑定到用户的表 User.orm.xml <entity name="UserBundle\Entity\User" table="fos_user_user">

我有一个带有用户字段的表单。我想显示语言列表中的复选框。选中的语言必须保存到数据库中

所以我有两个实体类:User和UserSiteLanguage。请参见下面的ORM和实体类。 “fos_user_user”表不包含任何语言的实字段。“user\u site\u language”是一个表,它包含一个将选定语言绑定到用户的表

User.orm.xml

<entity name="UserBundle\Entity\User" table="fos_user_user">

        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
        </id>
        <!-- Profile fields -->
        ...skipped ...

        <one-to-many field="siteEnabledLanguages" target-entity="UserBundle\Entity\UserSiteLanguage" mapped-by="user">
            <cascade>
                <cascade-all/>
            </cascade>
        </one-to-many>
    </entity>
<entity name="UserBundle\Entity\UserSiteLanguage" 
        table="user_site_language">

    <unique-constraints>
        <unique-constraint name="user_site_lang_locale_idx" columns="user_id,locale" />
    </unique-constraints>

    <lifecycle-callbacks>
        <lifecycle-callback type="prePersist" method="prePersist" />
        <lifecycle-callback type="preUpdate" method="preUpdate" />
    </lifecycle-callbacks>

    <id name="id" type="integer" column="id">
        <generator strategy="AUTO"/>
    </id>

    <field name="locale" column="locale" type="string" length="5" />       

    <many-to-one field="user" target-entity="UserBundle\Entity\User" inversed-by="siteEnabledLanguages">
        <join-column name="user_id" referenced-column-name="id" />
    </many-to-one>

</entity>
UserSiteLanguage.php

class User extends BaseUser{
        private $siteEnabledLanguages;

        /**
         * Add siteEnabledLanguage
         *
         * @param \UserBundle\Entity\UserSiteLanguage $siteEnabledLanguage
         *
         * @return User
         */
        public function addSiteEnabledLanguage(\UserBundle\Entity\UserSiteLanguage $siteEnabledLanguage)
        {
            $this->siteEnabledLanguages[] = $siteEnabledLanguage;

            return $this;
        }

        /**
         * Remove siteEnabledLanguage
         *
         * @param \UserBundle\Entity\UserSiteLanguage $siteEnabledLanguage
         */
        public function removeSiteEnabledLanguage(\UserBundle\Entity\UserSiteLanguage $siteEnabledLanguage)
        {
            $this->siteEnabledLanguages->removeElement($siteEnabledLanguage);
        }

        /**
         * Get siteEnabledLanguages
         */
        public function getSiteEnabledLanguages()
        {
            return $this->siteEnabledLanguages; 
        }
}
class UserSiteLanguage
{
    private $locale;
    private $id;
    private $user;

    // getters, setters
}
类AbstractUserFormType扩展AbstractType

{
...
      ->add('siteEnabledLanguages', 'entity', array(
           'choices' => $this->getLocaleList(),
           'class' => 'UserBundle:UserSiteLanguage',
           'property' => 'locale',
           'multiple' => true,
           'expanded' => true,
     ))

  protected function getLocaleList()
  {
      $localesList = array();
      $locales     = $this->container->getParameter('lexik_translation.managed_locales');

      foreach ($locales as $locale) {
          $localeName = Intl::getLocaleBundle()->getLocaleName($locale);
          $localesList[$locale] = $localeName;
      }

      return $localesList;
  }
}
在我的FormType上,我尝试使用“实体”字段类型显示区域设置列表。我从配置文件中获取区域设置列表。 当我使用这个FormType时,我得到一个错误:“预期参数类型为“object或array”,“string”为“given”

哪一个可能是问题