Symfony 索纳塔管理多对多属性表单
我使用了4个实体:Symfony 索纳塔管理多对多属性表单,symfony,sonata-admin,Symfony,Sonata Admin,我使用了4个实体: 翻译器 语言 翻译语言 场地 译者可以有多种语言。 语言可以有许多翻译人员。 一个站点可以分配一对翻译/语言 因此,我被迫创建translator_语言,即使里面没有“真正的属性” xx xx 映射正常([Mapping]正常-映射文件正确。) 使用许多映射,我可以 $formMapper->add('languages', null, array('required' => false, 'expanded' =&
$formMapper->add('languages', null,
array('required' => false, 'expanded' => true))
在TranslatorAdmin.php中,这将为每种语言呈现复选框,并为与translator关联的语言选中一个复选框,现在我正试图通过我的新体系结构实现这一点,但我无法轻松做到这一点
我真的不想创建translatorlanguageAdmin,因为我不希望表单是相同的,来自translator或language(因为它可以通过简单的多对多映射实现)
我是否需要将查询和模板关联到showMapper?还是我错过了一些简单的东西?我找到了一篇关于这个主题的非常好且清晰的帖子,希望这会对我有很大帮助,因为它帮助了我:
我发现了一篇关于这个主题的非常好且清晰的帖子,希望这会对我有很大帮助,因为它帮助了我:
一般问题:为什么不在语言和译者之间建立多对多关系,并将网站添加到译者中?因为我想这并不意味着相同的事情,我想将译者/语言的关联与网站相关联,不是所有语言的翻译人员。那么你应该在翻译人员->语言和侧边以及翻译人员->语言之间创建多对多。一个译者可以有他能够或允许翻译的语言,一个网站可以有不同的语言和不同的译者。。不需要第四个实体translatorSite,只会让事情变得更复杂:)我使用的是遗留数据库,所以我没有选择余地,但我同意你的观点,这不是一个完美的体系结构。问题是我不知道这是否可能以及如何(如果可能的话),要链接一个非实体的关系,请回答一个正确的问题-我不明白您真正想要的是什么:)比如我如何使用sonata admin创建一个具有以下功能的表单…一般问题:为什么不在语言和翻译之间创建多对多关系,并将网站添加到翻译中?因为我想这并不意味着相同的事情,我想将译者/语言的关联与一个网站相关联,而不是将译者与他的所有语言相关联。然后,你应该在译者->语言和侧边以及译者->语言之间创建多对多。一个译者可以有他能够或允许翻译的语言,一个网站可以有不同的语言和不同的译者。。不需要第四个实体translatorSite,只会让事情变得更复杂:)我使用的是遗留数据库,所以我没有选择余地,但我同意你的观点,这不是一个完美的体系结构。问题是,我不知道是否可能以及如何(如果可能)链接一个非实体的关系。请回答一个正确的问题-我无法理解您真正想要的是什么:)例如,我如何使用sonata admin创建具有以下功能的表单。。。
class Translator {
/**
* @var XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="translator")
*/
private $languages;
class TranslatorLanguage
{
/**
* @var XX\TranslateBundle\Entity\Translator
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Translator", inversedBy="languages")
* @ORM\JoinColumn(name="translatorID", referencedColumnName="ID", nullable=false)
*/
private $translator;
/**
* @var XX\TranslateBundle\Entity\Language
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Language", inversedBy="translators")
* @ORM\JoinColumn(name="languageID", referencedColumnName="ID", nullable=false)
*/
private $language;
/**
* @var XX\TranslateBundle\Entity\TranslatorSite
*
* @ORM\OneToMany(targetEntity="TranslatorSite", mappedBy="translatorLanguage")
*/
private $translatorSites;
$formMapper->add('languages', null,
array('required' => false, 'expanded' => true))