我有包含用户字段的表单。我想显示复选框语言列表。必须将选中的语言保存到数据库中。
所以我有2个实体类:User和UserSiteLanguage。请参阅下面的ORM和实体类。 ' fos_user_user'表格不包含语言的任何真实字段。并且' user_site_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>
UserSiteLanguage.orm.xml
<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>
user.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;
}
}
UserSiteLanguage.php
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上,我尝试使用&#39; entity&#39;来显示区域设置列表。字段类型。我从配置文件中获取语言环境列表。 当我使用这个FormType时,我得到错误:&#39;类型&#34;对象或数组&#34;,&#34;字符串&#34;的预期参数;给定&#39;
哪个可能是问题?