简体   繁体   中英

Sonata Admin many to many with attributes form

I'm using 4 entites :

  1. translator
  2. language
  3. translator_language
  4. site

Translator can have many languages. Languages can have many translators. A site can be assigned a couple translator/language.

So I have been forced to create translator_language even if there is no "real attribute" inside.

class Language {

/**
 * @var \XX\TranslateBundle\Entity\TranslatorLanguage
 * 
 * @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="language")
 */
private $translators;

xx

class Translator {
/**
     * @var XX\TranslateBundle\Entity\TranslatorLanguage
     * 
     * @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="translator")
     */
    private $languages;

xx

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;

Mapping is ok ([Mapping] OK - The mapping files are correct.)

With ManyToMany mapping, I could do

$formMapper->add('languages', null,
                        array('required' => false, 'expanded' => true))

in TranslatorAdmin.php, and that would render checkboxes for each languages, and checked one for languages associated to translator, now I'm trying to get that with my new architecture, but no way I manage to do that easily.

I don't really want to create a translatorlanguageAdmin because I don't want the form to be the same, coming from translator or language (as it can be done with simple many to many mapping)

Do I need to associate a query and a template to the showMapper ? Or am I missing something easy?

我找到了一个关于此主题的非常清楚的帖子,希望对我有帮助,对我有帮助: http : //www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM